如果值不存在,则设置为null;否则,如果在jolt中存在,则返回现有值

时间:2019-08-07 10:39:32

标签: jolt

如示例输入所示,我在每个对象中都有一个扩展数组。如果扩展名不包含subscription-type,则输出应为null,如输出所示,否则应包含现有值。同样适用于language-typesubscription-typelanguage-type的顺序本质上是随机的。

我已经尝试过规格,但无法正常工作

  {
    "operation": "modify-define-beta",
    "spec": {
      "*": {
        "subscriptionType": {
          "url": {
            "myCoercedValue": "subscription-type",
            "myStringValue": "subscription-type"
          },
          "value": {
            "myCoercedValue": null,
            "myStringValue": null
          }
        },
        "languageType": {
          "url": {
            "myCoercedValue": "language-type",
            "myStringValue": "language-type"
          },
          "value": {
            "myCoercedValue": null,
            "myStringValue": null
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "extension": "[&1].extension",
        "subscriptionType": "[&1].extension[]",
        "languageType": "[&1].extension[]"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "extension": {
          "*": {
            "@url": {
              "myStringValue": {
                "subscription-type": {
                  "@(3,value.myStringValue)": "[&3].subscriptionType[]"
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "0": "[]"
    }
  }
]

输入:

[
  {
    "extension": []
  },
  {
    "extension": [
      {
        "url": {
          "myCoercedValue": "subscription-type",
          "myStringValue": "subscription-type"
        },
        "value": {
          "myCoercedValue": "free",
          "myStringValue": "free"
        },
        "extension": []
      }
    ]
  },
  {
    "extension": [
      {
        "url": {
          "myCoercedValue": "language-type",
          "myStringValue": "language-type"
        },
        "value": {
          "myCoercedValue": "en-us",
          "myStringValue": "en-us"
        }
      },
      {
        "url": {
          "myCoercedValue": "subscription-type",
          "myStringValue": "subscription-type"
        },
        "value": {
          "myCoercedValue": "free",
          "myStringValue": "free"
        }
      }
    ]
  }
]

输出:

[ {
  "subscriptionType" : [ null, "free", "free" ],
  "language":[null,null,"en-US"]
} ]

1 个答案:

答案 0 :(得分:2)

也许您想获得这样的结果?请尝试这些规格并说出您要修改的内容。

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "extension": {
          "*": {
            "url": {
              "myCoercedValue": {
                "subscription-type": {
                  "@(3,value)": {
                    "myCoercedValue": "subscriptionType[#8]"
                  }
                },
                "language-type": {
                  "@(3,value)": {
                    "myCoercedValue": "language[#8]"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]
相关问题