在JavaScript中序列化XML

时间:2018-01-18 12:35:45

标签: javascript json xml express

我在使用express-xml-bodyparser解析它的快速服务器中使用XML,但结果对象基本上无法使用。

XML

<SubClass code="A07.0"/>
<SubClass code="A07.1"/>
<SubClass code="A07.2"/>
<SubClass code="A07.3"/>
<SubClass code="A07.8"/>
<SubClass code="A07.9"/>

被序列化为JSON

subclass:
[ { '$': { code: 'A07.0' } },
  { '$': { code: 'A07.1' } },
  { '$': { code: 'A07.2' } },
  { '$': { code: 'A07.3' } },
  { '$': { code: 'A07.8' } },
  { '$': { code: 'A07.9' } } ]

有没有办法直接把它变成

subclass: ['A07.0','A07.1','A07.2','A07.3','A07.8','A07.9']

或一些简单的方法如何将其转换为此数组?

2 个答案:

答案 0 :(得分:1)

您可以将mergeAttrs选项设置为true,以便移除$属性:

 xmlparser({ mergeAttrs: true, explicitArray: false})

输出:

SubClass: [
    { code: "A07.0" },
    { code: "A07.1" },
    { code: "A07.2" },
    { code: "A07.3" },
    { code: "A07.8" },
    { code: "A07.9" }
]

或者您可以使用array.map()方法:

&#13;
&#13;
var data = { subclass:
[ { '$': { code: 'A07.0' } },
  { '$': { code: 'A07.1' } },
  { '$': { code: 'A07.2' } },
  { '$': { code: 'A07.3' } },
  { '$': { code: 'A07.8' } },
  { '$': { code: 'A07.9' } } ] };
  
  
var result = data.subclass.map( (obj) => {
    return obj.$.code;
});

console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果你想将json转换成一个对象,那么可能就像......

var arr = Object.keys(json).map(function(x) { return obj[x] });

使用jQuery

var arr = $.map(json, function(x) { return x});