如何使用DataWeave 2.0将字符串拆分为带序号的键值对
解决方案:拆分逗号分隔字段为带序号的键值对
可以用Python实现这个需求,以下是完整代码:
import json # 输入数据 input_data = ''' [ { "Billing_ID": "Default", "Product": "License Fee", "Region": "EMEA", "Actual_Amount": "0,49902.95,0" }, { "Billing_ID": "Default", "Product": "License Fee", "Region": "APAC", "Actual_Amount": "0,0,0,0,0" } ] ''' # 解析JSON数据 data = json.loads(input_data) # 处理每个条目 for item in data: # 拆分Actual_Amount字符串为数组 amounts = item['Actual_Amount'].split(',') # 删除原字段 del item['Actual_Amount'] # 生成带序号的新字段 for idx, amount in enumerate(amounts, start=1): item[f'Actual_Amount_{idx}'] = amount # 输出处理后的JSON print(json.dumps(data, indent=2))
代码说明
- 解析输入:将JSON字符串转为Python列表对象,方便后续操作。
- 拆分字段:对每个对象的
Actual_Amount字段使用split(',')拆分,得到值的数组。 - 替换字段:删除原
Actual_Amount字段,再遍历拆分后的数组,按从1开始的序号生成新的键名(如Actual_Amount_1),并赋值对应的值。 - 输出结果:将处理后的Python对象转回格式化的JSON字符串,得到预期输出。
你之前只将字段转为数组但未得到预期结果,是因为缺少了将数组元素映射为带序号键值对的步骤,上面的代码补全了这部分逻辑。
内容的提问来源于stack exchange,提问作者user7194270
相关产品推荐
相关产品推荐

