用WSO2转换JSON数组

用WSO2转换JSON数组,json,wso2,wso2esb,wso2-am,wso2carbon,Json,Wso2,Wso2esb,Wso2 Am,Wso2carbon,我们是否知道如何用数组转换json,用其他字段转换新的json。 我有一个json示例。此示例json是动态的。数组中可以有三个或四个元素 "insurer": [ { "data": { "first_name": "Name", "last_name": "SureName" } }, { "data": { "first_name": "Name1", "last_name":

我们是否知道如何用数组转换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>

我正在使用WSO2 ESB V6.1.0,对您的序列进行了3次更改,这应该可以正常工作

  • 首先将foreach修改器的表达式更改为//Insurator, 因为您的JSON消息包含保险公司的数组
  • 接下来,使用XML作为 有效负载工厂中介器的媒体类型,并组成单个 预期保险人因素
  • 最后设置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"/>
    
    
    $1
    $2
    
    非常感谢。这对我很有帮助
         <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"/>