【问题标题】:Mule Dataweave Cannot coerce a :null to a :numberMule Dataweave 无法将 :null 强制为 :number
【发布时间】:2017-11-11 02:31:38
【问题描述】:

我正在构建两个不同 Json 数据流的 Java 映射。但是,如果其中一个流在数量中包含空值,则流将出错并出现以下情况:

 ($.itemid) : '"' ++ skuLookup[$.sku][0].qty as :number as :string {format: "#.0000"} ++ '"'
                                                                         ^
 Cannot coerce a :null to a :number 
 (com.mulesoft.weave.mule.exception.WeaveExecutionException). Message payload is of type: String

理想的情况是忽略迭代中的空值这是未触及的数据编织:

  %output application/java
  %var skuLookup =  flowVars.SSRCreateStarshipItems groupBy $.sku
  ---
  flowVars.SSRGetOrderItems map ({
  ($.itemid) : '"' ++ skuLookup[$.sku][0].qty as :number as :string 
  {format: "#.0000"} ++ '"'
  })

这是我理想的解决方案,但我似乎无法让它发挥作用:

  %output application/java
  %var skuLookup =  flowVars.SSRCreateStarshipItems groupBy $.sku
  ---
  flowVars.SSRGetOrderItems map ({
  ($.itemid) : '"' ++ skuLookup[$.sku][0].qty as :number as :string 
  {format: "#.0000"} ++ '"'
  }) when skuLookup[$.sku][0].qty != null

【问题讨论】:

    标签: java null dataweave


    【解决方案1】:

    设置默认值可以解决您的问题。 例如,如果您要传递这样的有效负载:

    {
        "testMap": [
            {
                "testName": "TestName",
                "Value": "3"
            },
            {
                "testName": "TestName",
                "Value": null
            }
        ]
    }
    

    您可以将 Value 键转换为数字或通过以下方式传递 null:

    %dw 1.0
    %input payload application/json
    %output application/json
    ---
    payload.testMap map (data, index) -> {
    
      testName: data.testName,
      Value: data.Value as :number as :string {format: "#.0000"} default null
    }
    

    结果如下:

    [
      {
        "testName": "TestName",
        "Value": "3.0000"
      },
      {
        "testName": "TestName",
        "Value": null
      }
    ]
    

    另外,如果您想完全删除密钥,请将其插入到 json 的输出标头之后:

    skipNullOn="everywhere"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多