You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jolt将指定JSON输入转换为符合要求的目标输出?

问题描述

需要通过Jolt工具完成JSON格式转换:将输入中lineItems数组内每个对象的attributes字段从JSON字符串转换为JSON对象,但需注意,attributes中的嵌套属性(如attr11)的value需保持字符串格式,不进行JSON转换。

输入示例(Input.json)

{
  "id": 67046492,
  "owner": "John Doe",
  "version": 1,
  "lineItems": [
    {
      "id": 219,
      "attributes": "{}"
    },
    {
      "id": 220,
      "attributes": "{\"attr1\":{\"value\":\"7.0\",\"actionCode\":\"ADD\"},\"attr2\":{\"value\":\"gdajdas\",\"actionCode\":\"ADD\"},\"attr3\":{\"value\":\"Y\",\"actionCode\":\"ADD\"},\"attr4\":{\"actionCode\":\"ADD\"},\"attr5\":{\"value\":\"2\",\"actionCode\":\"ADD\"},\"attr6\":{\"value\":\"jjj\",\"actionCode\":\"ADD\"},\"attr7\":{\"value\":\"N\",\"actionCode\":\"ADD\"},\"attr8\":{\"value\":\"jwidhf\",\"actionCode\":\"ADD\"},\"attr9\":{\"value\":\"kncskc\",\"actionCode\":\"ADD\"},\"attr10\":{\"value\":\"2\",\"actionCode\":\"ADD\"},\"attr11\":{\"value\":\"{\\\"key1\\\":\\\"2\\\",\\\"key2\\\":\\\"7.0\\\",\\\"key3\\\":\\\"3.5\\\",\\\"key4\\\":\\\"\\\"}\"},\"actionCode\":\"ADD\"},\"attr12\":{\"value\":\"3.5\",\"actionCode\":\"ADD\"}}"
    },
    {
      "id": 221,
      "attributes": "{\"attr1\":{\"value\":\"7.0\",\"actionCode\":\"ADD\"},\"attr2\":{\"value\":\"gdajdas\",\"actionCode\":\"ADD\"},\"attr3\":{\"value\":\"Y\",\"actionCode\":\"ADD\"},\"attr4\":{\"actionCode\":\"ADD\"},\"attr5\":{\"value\":\"2\",\"actionCode\":\"ADD\"},\"attr6\":{\"value\":\"jjj\",\"actionCode\":\"ADD\"},\"attr7\":{\"value\":\"N\",\"actionCode\":\"ADD\"},\"attr8\":{\"value\":\"jwidhf\",\"actionCode\":\"ADD\"},\"attr9\":{\"value\":\"kncskc\",\"actionCode\":\"ADD\"},\"attr10\":{\"value\":\"2\",\"actionCode\":\"ADD\"},\"attr11\":{\"value\":\"{\\\"key1\\\":\\\"2\\\",\\\"key2\\\":\\\"7.0\\\",\\\"key3\\\":\\\"3.5\\\",\\\"key4\\\":\\\"\\\"}\"},\"actionCode\":\"ADD\"},\"attr12\":{\"value\":\"3.5\",\"actionCode\":\"ADD\"}}"
    }
  ]
}

预期输出示例(Expected.json)

{
    "id": 67046492,
    "owner": "John Doe",
    "version": 1,
    "lineItems": [
        {
            "id": 219,
            "attributes": "{}"
        },
        {
            "id": 220,
            "attributes": {
                "attr1": {
                    "value": "7.0",
                    "actionCode": "ADD"
                },
                "attr2": {
                    "value": "gdajdas",
                    "actionCode": "ADD"
                },
                "attr3": {
                    "value": "Y",
                    "actionCode": "ADD"
                },
                "attr4": {
                    "actionCode": "ADD"
                },
                "attr5": {
                    "value": "2",
                    "actionCode": "ADD"
                },
                "attr6": {
                    "value": "jjj",
                    "actionCode": "ADD"
                },
                "attr7": {
                    "value": "N",
                    "actionCode": "ADD"
                },
                "attr8": {
                    "value": "jwidhf",
                    "actionCode": "ADD"
                },
                "attr9": {
                    "value": "kncskc",
                    "actionCode": "ADD"
                },
                "attr10": {
                    "value": "2",
                    "actionCode": "ADD"
                },
                "attr11": {
                    "value": "{\"key1\":\"2\",\"key2\":\"7.0\",\"key3\":\"3.5\",\"key4\":\"\"}",
                    "actionCode": "ADD"
                },
                "attr12": {
                    "value": "3.5",
                    "actionCode": "ADD"
                }
            }
        },
        {
            "id": 221,
            "attributes": {
                "attr1": {
                    "value": "7.0",
                    "actionCode": "ADD"
                },
                "attr2": {
                    "value": "gdajdas",
                    "actionCode": "ADD"
                },
                "attr3": {
                    "value": "Y",
                    "actionCode": "ADD"
                },
                "attr4": {
                    "actionCode": "ADD"
                },
                "attr5": {
                    "value": "2",
                    "actionCode": "ADD"
                },
                "attr6": {
                    "value": "jjj",
                    "actionCode": "ADD"
                },
                "attr7": {
                    "value": "N",
                    "actionCode": "ADD"
                },
                "attr8": {
                    "value": "jwidhf",
                    "actionCode": "ADD"
                },
                "attr9": {
                    "value": "kncskc",
                    "actionCode": "ADD"
                },
                "attr10": {
                    "value": "2",
                    "actionCode": "ADD"
                },
                "attr11": {
                    "value": "{\"key1\":\"2\",\"key2\":\"7.0\",\"key3\":\"3.5\",\"key4\":\"\"}",
                    "actionCode": "ADD"
                },
                "attr12": {
                    "value": "3.5",
                    "actionCode": "ADD"
                }
            }
        }
    ]
}

Jolt转换规则

以下是实现需求的Jolt规范:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "lineItems": {
        "*": {
          "attributes": ["=notNull", "=jsonPath(@)", "{}"]
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "lineItems": {
        "*": {
          "attributes": {
            "*": {
              "value": ["=notNull", "@"]
            }
          }
        }
      }
    }
  }
]

规则说明

  1. 第一个modify-overwrite-beta操作:遍历lineItems数组的每个元素,将非空的attributes字符串解析为JSON对象;若attributes为"{}"则保持原字符串不变。
  2. 第二个modify-overwrite-beta操作:遍历解析后的attributes内的所有属性,确保其value字段保留原始字符串格式,不会被二次解析。

内容的提问来源于Stack Exchange,提问作者Rakesh GR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:00:55