【问题标题】:Hard coded value based on the filed name in jolt spec基于 jolt 规范中的字段名称的硬编码值
【发布时间】:2023-04-09 22:45:02
【问题描述】:

我正在使用 jolt 将一个 json 转换为另一个 json,但是对于给定的输入 json,我没有得到正确的输出 json

输入:

{  
  "user":{  
        "homePhone":"12345678901",
        "mobilePhone":"12346750983",
        "email":"test@example.com"
   }
}

预期的 Json:

{  
   "contact":[  
    {  
      "class":"PhoneClass",
      "phoneNumber":"12345678901",
      "mobile":false,
      "preferred":false
   },
   {  
      "class":"PhoneClass",
      "phoneNumber":"12346750983",
      "mobile":true,
      "preferred":true
   },
   {  
      "class":"EmailClass",
      "email":"test@example.com"
   }
]
}

在输出 json 中,我还需要添加一些额外的字段。

【问题讨论】:

    标签: jolt


    【解决方案1】:

    其中有多少是动态的?如果对于您的示例,您知道您将拥有这三个输入字段并想要三个输出对象,那么这个规范应该可以工作:

    [
      {
        "operation": "shift",
        "spec": {
          "user": {
            "homePhone": "contact[0].phoneNumber",
            "mobilePhone": "contact[1].phoneNumber",
            "email": "contact[2].email"
          }
        }
      },
      {
        "operation": "default",
        "spec": {
          "contact[]": {
            "0": {
              "class": "PhoneClass",
              "mobile": false,
              "preferred": false
            },
            "1": {
              "class": "PhoneClass",
              "mobile": true,
              "preferred": true
            },
            "2": {
              "class": "EmailClass"
            }
          }
        }
      }
    ]
    

    【讨论】:

    • 感谢 mattyb 的回复,它工作正常,但是我需要输出 json 的 phoneNumber 和 email 属性呢,我如何添加这个 i 规范。
    • 你想在哪里添加它们?
    • 如果您在我的问题中看到 Expected Json,我想将它们添加到联系人数组中。
    • 使用您的输入 JSON 和我的规范,我得到了您的预期 JSON(尽管这些字段是无序的)。你得到了什么?
    • 我得到了 { "contact" : [ { "class" : "PhoneClass", "mobile" : false, "preferred" : false }, { "preferred" : true, "class" : "PhoneClass", "mobile" : true }, { "class" : "EmailClass" } ] } 这个输出。
    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-12
    • 2012-06-27
    • 1970-01-01
    相关资源
    最近更新 更多