【发布时间】:2021-07-02 18:10:09
【问题描述】:
我想获得 JSON 的长度,但它没有给出我想要的值。我正在使用 XML 到 JSON 转换器库 (xml2js)。如果您知道除了 xml2js 之外的另一个库。我也可以用。
console.log(result.length) -> 返回2,正确。
{
LISTENER: [
{
CONNECTTIME: { _text: '4880' },
UID: { _text: '57' },
XFF: {},
GRID: { _text: '57' },
TRIGGERS: { _text: '0' }
},
{
CONNECTTIME: { _text: '254' },
UID: { _text: '65' },
XFF: {},
GRID: { _text: '65' },
TRIGGERS: { _text: '0' }
}
]
}
但如果我从 JSON 中删除一条记录,如下所示。
console.log(result.length) -> 返回 9,这是错误的。我希望它是 1。我在哪里做错了?
{
LISTENER: {
CONNECTTIME: { _text: '4587' },
UID: { _text: '57' },
XFF: {},
GRID: { _text: '57' },
TRIGGERS: { _text: '0' }
}
}
有人可以帮助我吗?是否有任何强制选项可以使两条记录都转换为数组。
其他帮助信息;
这是代码。
var options = {ignoreComment: true, alwaysChildren: true, compact: true}
var result = convert.xml2js(response.data, options);
console.log("listeners.listener:"+Object.keys(result.SHOUTCASTSERVER.LISTENERS.LISTENER).length);
console.log(util.inspect(result.SHOUTCASTSERVER.LISTENERS, false, null, true /* enable colors */))
response.data 是来自网站的获取请求(使用 axios 库)的响应。给出 XML 页面的正文。
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<SHOUTCASTSERVER>
<LISTENERS>
<LISTENER>
<CONNECTTIME>350</CONNECTTIME>
<UID>66</UID>
<XFF/>
<GRID>66</GRID>
<TRIGGERS>0</TRIGGERS>
</LISTENER>
</LISTENERS>
</SHOUTCASTSERVER>
带有库的 XML 页面转换 (XMLtoJS) 结果的输出(如果有1条记录这样转换);
{
_declaration: {
_attributes: { version: '1.0', encoding: 'UTF-8', standalone: 'yes' }
},
SHOUTCASTSERVER: {
LISTENERS: {
LISTENER: {
CONNECTTIME: { _text: '657' },
UID: { _text: '66' },
XFF: {},
GRID: { _text: '66' },
TRIGGERS: { _text: '0' }
}
}
}
}
结果的输出(2条记录输出);
{
_declaration: {
_attributes: { version: '1.0', encoding: 'UTF-8', standalone: 'yes' }
},
SHOUTCASTSERVER: {
LISTENERS: {
LISTENER: [
{
CONNECTTIME: { _text: '819' },
UID: { _text: '66' },
XFF: {},
GRID: { _text: '66' },
TRIGGERS: { _text: '0' }
},
{
CONNECTTIME: { _text: '3' },
UID: { _text: '68' },
XFF: {},
GRID: { _text: '68' },
TRIGGERS: { _text: '0' }
}
]
}
}
}
【问题讨论】:
-
两个Object不同,不清楚
-
JSON 的长度是什么意思?您还可以为每种情况添加您期望的正确值吗?您是否试图找到JSON字符串长度的数组长度?
-
有何不同?你能解释一下吗
-
嗯,一个是数组,一个是对象。
LISTENER: []不是LISTENER: {} -
我正在使用 xml2js(xml to json) 库。如果有多个值,我认为它会转换为这种方式。
标签: javascript node.js json xml2js