Azure Liquid模板JSON转JSON:如何提取指定自定义字段集?
Dot Liquid模板:提取userDefinedFields指定字段并保留其他数据
针对你的需求,这里提供一个Dot Liquid模板,既能提取userDefinedFields数组中的Reason、Number、Bill、Key四个字段(不存在则设为null),又能保留data节点下的其他所有字段:
{ "data": { {% comment %} 遍历userDefinedFields,将所有字段存入临时对象 {% endcomment %} {% assign udf = {} %} {% for field in data.userDefinedFields %} {% assign key = field | keys | first %} {% assign value = field[key] %} {% assign udf = udf | merge: { (key): value } %} {% endfor %} {% comment %} 保留data下除userDefinedFields外的原有字段 {% endcomment %} {% for key in data %} {% if key != "userDefinedFields" %} "{{ key }}": {{ data[key] | json }}, {% endif %} {% endfor %} {% comment %} 输出目标字段,无对应值则设为null {% endcomment %} "Reason": {{ udf.Reason | default: null | json }}, "Number": {{ udf.Number | default: null | json }}, "Bill": {{ udf.Bill | default: null | json }}, "Key": {{ udf.Key | default: null | json }} } }
代码说明:
- 临时对象存储字段:先创建空对象
udf,遍历userDefinedFields数组,把每个字段的键值对合并到udf中。这里假设数组中的每个元素是单键值对结构(如{"Reason": "退款"}),如果你的结构是每个元素包含name和value字段,只需把key和value的赋值逻辑改成field.name和field.value即可。 - 保留原有字段:遍历
data节点的所有键,排除userDefinedFields,将其他字段原样输出,json过滤器用来保证输出的JSON格式合法。 - 处理缺失字段:使用
default: null过滤器,当udf中不存在对应字段时,自动填充为null,同样通过json过滤器确保值的格式符合JSON规范。
内容的提问来源于stack exchange,提问作者timz_123
相关产品推荐
相关产品推荐

