如何通过JSONata根据输入是否含prop3属性转换JSON对象?
JSONata实现动态属性映射需求
完全可以通过JSONata实现这个需求,核心是利用JSONata的$nothing特殊值实现条件性包含属性——当原属性存在时生成对应目标属性,不存在则不生成。
对应的JSONata表达式
{ "property_1": prop1, "property_2": prop2, "property_3": prop3 ? prop3 : $nothing }
表达式说明
prop1和prop2直接映射为property_1和property_2;如果需要对这两个属性也做“存在才生成”的处理,同样可以套用prop1 ? prop1 : $nothing的写法- 对于
prop3,用三元表达式判断:若prop3存在且有有效值,就将其赋值给property_3;若prop3不存在,返回$nothing——JSONata会自动忽略值为$nothing的属性,因此输出中不会出现property_3
验证示例
输入1:
{ "prop1":"prop1 value1", "prop2":"prop2 value1", "prop3":"prop3 value1" }
代入表达式后,prop3存在,输出符合期望:
{ "property_1": "prop1 value1", "property_2": "prop2 value1", "property_3": "prop3 value1" }
输入2:
{ "prop1":"prop1 value1", "prop2":"prop2 value1" }
代入表达式后,prop3不存在,property_3被自动忽略,输出符合期望:
{ "property_1": "prop1 value1", "property_2": "prop2 value1" }
内容的提问来源于stack exchange,提问作者Loki
相关产品推荐
相关产品推荐

