繁体   English   中英

使用WSO2转换JSON数组

[英]Transforming JSON array with WSO2

我们是否有一些想法如何用数组将json转换为具有其他字段的新json。 我有示例json。 此示例json是动态的。 数组中可以包含三个或四个元素。

"insurer": [ 
     {
    "data": {
        "first_name": "Name",
        "last_name": "SureName"
    }
    },
   {
    "data": {
        "first_name": "Name1",
        "last_name": "SureName1"
    }
}],

我想接收json

    "insurer": [ 
     {
    "data": {
        "name": "Name",
        "nameLast": "SureName"
    }
    },
   {
    "data": {
        "name": "Name1",
        "nameLast": "SureName1"
    }
}],

我做了这个顺序

 <foreach id="foreach_1" expression="//insurer/data">
        <sequence>
           <payloadFactory media-type="json">
              <format>{ "name" : "$1", 
                        "nameLast" : "$2"                            }                  
              </format>
              <args>
                 <arg evaluator="xml" expression="//first_name"/>
                 <arg evaluator="xml" expression="//last_name"/>
              </args>
           </payloadFactory>
           <log>
              <property name="message" value="petla"/>
           </log>
        </sequence>
     </foreach>

不幸的是,我只得到了部分json。 你可能有个主意

 { ,"name" : "Name1", "nameLast" : "SureName1" }

我正在使用WSO2 ESB V6.1.0

对序列进行3次更改后,这应该可以正常工作。

  1. 首先将foreach修饰符的表达式更改为// insurer,因为您的JSON消息具有适用于insurer的数组。
  2. 接下来,使用XML作为有效负载工厂介体的媒体类型,并组成一个预期的保险人元素。
  3. 最后设置messageType属性,以将消息类型更改为JSON。

在下面找到示例代码。

     <foreach xmlns:ns="http://org.apache.synapse/xsd"
              expression="//insurer">
        <sequence>
           <payloadFactory media-type="xml">
              <format>
                <insurer>
                   <data>
                      <name>$1</name>
                      <nameLast>$2</nameLast>
                   </data>
                </insurer>
              </format>
              <args>
                 <arg evaluator="xml" expression="//first_name"/>
                 <arg evaluator="xml" expression="//last_name"/>
              </args>
           </payloadFactory>
        </sequence>
     </foreach>
     <property name="messageType" value="application/json" scope="axis2"
               type="STRING"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM