<specialty nameCN="电测">
        <step>
            <signer staffID="800706" nameCN=""><![CDATA[]]></signer>
        </step>
        <step>
            <signer staffID="090477" nameCN=""><![CDATA[]]></signer>
        </step>
    </specialty>
    <specialty nameCN="节能">
        <step>
            <signer staffID="800608" nameCN=""><![CDATA[]]></signer>
            <signer staffID="800808" nameCN=""><![CDATA[]]></signer>
        </step>
        <step>
            <signer staffID="800602" nameCN=""><![CDATA[]]></signer>
            <signer staffID="800803" nameCN=""><![CDATA[]]></signer>
        </step>
    </specialty>通过xmlSerializer.read(xml).toString();  
转换结果:{
  "@nameCN": "电测",
  "step": [
    {
      "signer": {
        "@staffID": "800706",
        "@nameCN": "",
        "#cdata-section": 
      }
    },
    {
      "signer": {
        "@staffID": "090477",
        "@nameCN": "",
        "#cdata-section": 
      }

    }
  ]
},
{
  "@nameCN": "节能",
  "step": [
    {
      "signer": [
        {
          "@staffID": "800608",
          "@nameCN": "",
          "#cdata-section": 
        },
        {
          "@staffID": "800808",
          "@nameCN": "",
          "#cdata-section": 
        }
      ]
    },
    {
      "signer": [
        {
          "@staffID": "800602",
          "@nameCN": "",
          "#cdata-section": 
        },
        {
          "@staffID": "800803",
          "@nameCN": "",
          "#cdata-section": 
        }
      ]
    }
  ]
}

解决方案 »

  1.   

    上面的结果 用红色标记出来的就是差别,step下有多个signer节点时,输出结果signer是数组,只有1个signer节点 输出signer不是数组,如何在只有一个signer节点时也输出为数组
      

  2.   


    之前也有人遇到这种问题,只有一个附上了方法:
    有一个方案,但不在好,也就是把xml先反序列化,反序列化时要写类来反序列化,然后再序列化成json。
    在页面用一个插件检验节点是否为数组,不是则转为数组;
    但是我这个是别人后台请求我的接口
      

  3.   

    博主,有转换的代码提供吗,我xml转json的时候 cdata部分直接显示里面内容  而没有cdata标识。