【问题标题】:Quoting properties in Spring Cloud Dataflow在 Spring Cloud Dataflow 中引用属性
【发布时间】:2018-07-10 00:20:50
【问题描述】:

这似乎是一个愚蠢的问题,但我们正在尝试从 SCDF shell 应用程序定义数据流,但我们遇到了引用问题。假设我们想要使用 SpEL 表达式定义一个过滤器,以过滤掉 JSON 输入中没有名称 John Doe 的任何内容。 SpEL 将是:

payload.name != 'John Doe'

payload.name ne 'John Doe'

流定义为:

stream create --name testflow --definition "http | filter --expression=<expression> | log"

我不能用单引号将 括起来,因为表达式本身包含单引号,而且我不能使用双引号,因为整个流定义都使用它们。我不能只留下引号,因为这样 shell 的解析器就会被空格和 ! 混淆。从 shell 应用程序中定义这个流是不可能的吗?可以从浏览器应用程序执行此操作,但其他数据流定义在那里存在解析问题。

【问题讨论】:

    标签: spring-cloud-stream spring-cloud-dataflow


    【解决方案1】:

    用字符串字面量定义过滤器表达式有点棘手。我们应该用两个单引号而不是双引号将字符串文字(带空格)括起来。

    stream create --name test --definition "http | filter --expression='!(payload.firstName==''Joe Robert'' and (payload.lastname==''Smith'' or payload.prod==''Williams''))' |log" 
    

    上面只有定义用双引号括起来。 参考:https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-cloud-dataflow-stream-intro-dsl

    【讨论】:

    • 哦,我现在明白了。史密斯和威廉姆斯周围的双引号实际上是双引号。现在可以了!谢谢!
    • 谢谢,舒巴。我们在Shell Tips & Tricks 上进行了截屏,其中涵盖了推理和其他替代方案。我也觉得分享一下可能有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多