WSO2序列中向现有JSON高效添加新字段的解决方案咨询
解决方案
以下两种方案都可以保留原有JSON全部结构,不会额外新增不存在的字段、也不会填充null值:
方案1:使用Script Mediator(最优选择)
直接通过内置JS脚本操作消息 payload,代码量最少,性能损耗最低:
<script language="js"><![CDATA[ // 获取原请求完整JSON var payload = mc.getPayloadJSON(); // 直接追加新字段,值也可以通过mc.getProperty("属性名")从上下文获取 payload.nationality = "Italian"; // 替换回消息体 mc.setPayloadJSON(payload); ]]></script>
方案2:使用Enrich Mediator(无脚本原生实现)
如果需要纯配置实现,可以用Enrich mediator做字段合并:
<!-- 存储要新增的字段值 --> <property name="nationalityVal" value="Italian" scope="default" type="STRING"/> <!-- 构造仅包含新增字段的临时JSON --> <payloadFactory media-type="json"> <format>{"nationality": "$1"}</format> <args> <arg evaluator="xml" expression="$ctx:nationalityVal"/> </args> </payloadFactory> <!-- 将临时字段合并到原JSON根节点下 --> <enrich> <source clone="true" xpath="json-eval($.nationality)"/> <target action="child" xpath="json-eval($)"/> </enrich>
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

