如何在 jolt 中比较两个字符串值

How to compare two string values in jolt

提问人:Bhavna Gawhade 提问时间:7/10/2023 最后编辑:Barbaros ÖzhanBhavna Gawhade 更新时间:7/14/2023 访问量:70

问:

我想根据输入 JSON 的两个字段值过滤掉输入 JSON。

输入 JSON

[
  {
    "from_Store": "Test1",
    "to_Store": "Test1",
    "items": [
      {
        "UPC": "8240959370255",
        "shippedQuantity": 1
      }
    ]
  },
  {
    "from_Store": "Test2",
    "to_Store": "Test3",
    "items": [
      {
        "UPC": "8240959370210",
        "shippedQuantity": 1
      }
    ]
  }
]
  1. 如果 from_Storeto_Store 的值不匹配,则将映射的完整元素保留在输出 JSON 中。
  2. 如果值匹配,则整个元素不应出现在输出中

预期输出 JSON

[
  {
    "from_Store": "Test2",
    "to_Store": "Test3",
    "items": [
      {
        "UPC": "8240959370210",
        "shippedQuantity": 1
      }
    ]
  }
]

是否有任何功能可以比较 Jolt 中的字符串?

任何帮助将不胜感激!

JSON 相等 性震撼

评论


答:

1赞 Barbaros Özhan 7/11/2023 #1

您可以交换键值对和属性,无论是否为每个节点形成数组。如果形成数组,那么我们将只得到 1 个元素,例如。属性的值相等。否则,我们将得到 2 个元素,因此,我们将保留它们作为结果,例如to_Storefrom_Store

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*_*": "Cnt[&1].Count.@0" // to represent both of the attributes with unique underscores, eg. "from_store" and "to_store"
      },
      "@": "Original" // replicate the initial JSON value
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "Cnt": {
        "*": {
          "Count": "=size(@(1,&))"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "Count": "&1",
          "*": "&1.&"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "1": { // the second component
          "2": { // keep the value if its value is 2
            "@(2,[0])": "[]"
          }
        }
      }
    }
  }
]

网站上的演示 http://jolt-demo.appspot.com/

enter image description here