我使用fast-xml-parser在我的代码中将xml字符串转换为JSON。问题是在XML中我有一个包含元素数组的标记,但是当我们在这个标记中只接收一个元素时,这个标记中的值被解析为JSON对象而不是JSON数组,但是当有多个值时,它被解析为数组。
下面是当tag中只有一个元素时我收到的示例和输出
xmlString = `<Items>
<Item sn="abcd"/>
</Items>`
输出:{ Items: { Item: { attributes: [Object] } } }
下面是包含多个元素时的示例和输出
xmlString = `<Items>
<Item sn="abcd"/>
<Item sn="efgh"/>
</Items>`
输出:{ Item: [ { attributes: [Object] }, { attributes: [Object] } ] }
有没有一种方法可以修复它,以便每次我接收到的项目作为JSON数组,而不是JSON对象?
3条答案
按热度按时间2sbarzqh1#
或者,您也可以使用camaro转换输出,这将使其与您想要的一致
你可以重命名字段,用基于xpath的模板来塑造输出。
在下面的示例中,您指定输出的属性
items
为数组,则输出将始终为数组范例
输出
0x6upsns2#
根据文档,有一个非常灵活的选项
arrayMode
:当
false
时,出现一次的标签被解析为对象,但在多次出现的情况下被解析为数组。当true
时,标签将被解析为始终不包括叶子节点的数组。当strict
时,所有标签将被解析为数组。当RegEx
的示例时,只有标签将被解析为匹配正则表达式的数组。当function
时,标签名称被传递给可以检查的回调。在你的例子中,一个简单的正则表达式就可以了。虽然不确定它是否期望
/Items/
或/Item/
-但你肯定可以立即测试它。应导致
Item
作为数组检索的示例情况:exdqitrt3#
我一直在使用NodeJs中的fast-xml-parse,在新版本的lib中,我需要为此提供一个简单的解决方案。这是一个简单的示例,可以应用到您的代码中。