求助:如何使用JSONata重构商品数据结构
JSONata 商品数据结构转换实现方案
针对你提供的商品源数据,以下JSONata表达式可实现目标结构转换,自动扁平化properties数组中的键值对,并为缺失的customization_logo和customization_logo_pos字段补空字符串:
{ "products": $map($, function($item) { $merge([ { "name": $item.name, "quantity": $item.quantity }, $reduce($item.properties, function($acc, $prop) { $merge([$acc, {$prop.name: $prop.value}]) }, {}), { "customization_logo": $item.properties[name="customization_logo"].value ~> $default(""), "customization_logo_pos": $item.properties[name="customization_logo_pos"].value ~> $default("") } ]) }) }
表达式拆解
- 外层结构构建:用
{ "products": ... }包裹最终结果数组 - 遍历源数据:
$map($, ...)遍历输入的商品数组,逐个处理每个商品项 - 基础字段提取:直接提取
name和quantity核心字段 - 扁平化properties:通过
$reduce遍历properties数组,将每个name-value对合并为对象属性 - 缺失字段补全:使用
$default("")为不存在的customization_logo和customization_logo_pos字段设置默认空字符串
将上述表达式应用到源数据后,会生成与你期望完全一致的JSON结构。
内容的提问来源于stack exchange,提问作者ctotheb
相关产品推荐
相关产品推荐

