代码之家  ›  专栏  ›  技术社区  ›  Zyoumir

在dataweave中使用json对象映射负载

  •  -1
  • Zyoumir  · 技术社区  · 2 年前

    我要做的是将CodeOT映射到有效负载中的每个对象,例如:

    1到5得到值2 6到9得到值3

    我不知道该怎么做,因为我不熟悉数据编织

    有效载荷示例:

        {
        "refSig" : "0110443372",
        "indSap":2
        },
        {
        "refSig" : "0000443942",
        "indSap":0
        },
        {
        "refSig" : "0117243942",
        "indSap":null
        }
    

    提供了转换表,必须按原样使用,这是它的一部分

    {
        "CodeSap": null,
        "Libelle": "",
        "CodeOT": 1
      },
      {
        "CodeSap": 0,
        "Libelle": "Elle a demandé un délai de paiement",
        "CodeOT": 1
      },
      {
        "CodeSap": 1,
        "Libelle": "Elle a des factures SATD",
        "CodeOT": 2
      },
      {
        "CodeSap": 2,
        "Libelle": "Elle a des factures remises à l’huissier",
        "CodeOT": 2
      }
    

    我开始这样做,但它似乎没有把我带到任何地方

    %dw 2.0
    output application/json
    ---
    
    lignesOK : payload map (item, index) -> {
          bf: item mapObject (value, key) -> {
          (key): value,
          codeOt: varTable map (it,val) ->{
              (val):(it)
          }
          }
    }
    

    上述有效载荷示例的预期输出为:

    {
        "refSig" : "0110443372",
        "CodeOT":2
        },
        {
        "refSig" : "0000443942",
        "CodeOT":1
        },
        {
        "refSig" : "0117243942",
        "CodeOT":1
        }
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   aled    2 年前

    假设输入和表是数组,并且表中的条目在每个 CodeSap 以下脚本可以工作,但由于提供的表不完整,输出与预期略有不同:

    %dw 2.0
    output application/json
    var varTable=[{
        "CodeSap": null,
        "Libelle": "",
        "CodeOT": 1
      },
      {
        "CodeSap": 0,
        "Libelle": "Elle a demandé un délai de paiement",
        "CodeOT": 1
      },
      {
        "CodeSap": 1,
        "Libelle": "Elle a des factures SATD",
        "CodeOT": 2
      },
      {
        "CodeSap": 2,
        "Libelle": "Elle a des factures remises à l’huissier",
        "CodeOT": 2
      }]
    ---
    payload map (item, index) -> {
          
          refSig: item.refSig,
          codeOt: (varTable filter (item.indSap == $.CodeSap))[0].CodeOT
    }
    

    [
      {
        "refSig": "0110443372",
        "codeOt": null
      },
      {
        "refSig": "0000443942",
        "codeOt": 1
      },
      {
        "refSig": "0117243942",
        "codeOt": 1
      }
    ]