在NodeJS中解析后无法打印json值

时间:2015-02-26 19:19:20

标签: javascript json node.js

下面的NodeJS代码尝试将xml文档转换为json,然后解析它。

var fs = require('fs');
var parse = require('jsonml').parse;

var jsonML = parse(fs.readFileSync('myfile.xml'));
var jsondata = JSON.parse(jsonML);
console.log(jsondata.BESAPI.Computer[0].ID);

它工作正常,但我无法显示正确的值。行console.log(jsondata.BESAPI.Computer[0].ID);

上会出现错误

我正在尝试在json对象中显示每台计算机的ID。

Json对象

{
  "BESAPI": {
    "-xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
    "-xsi:noNamespaceSchemaLocation": "BESAPI.xsd",
    "Computer": [
      {
        "-Resource": "api/computer/2431038",
        "LastReportTime": "Thu, 26 Feb 2015 14:54:41 +0000",
        "ID": "2431038"
      },
      {
        "-Resource": "api/computer/16710075",
        "LastReportTime": "Thu, 26 Feb 2015 14:45:18 +0000",
        "ID": "16710075"
      },
      {
        "-Resource": "api/computer/3415985",
        "LastReportTime": "Thu, 26 Feb 2015 14:50:52 +0000",
        "ID": "3415985"
      }]
      }
}

我收到此错误:

enter image description here

1 个答案:

答案 0 :(得分:0)

如果没有原始XML,我无法确切知道发生了什么,但this experiment可能会帮助您进一步调查。

对于像

这样的XML
<?xml version="1.0"?>
<BESAPI>
  <Computer ID="api/computer/2431038"></Computer>
  <Computer ID="api/computer/16710075"></Computer>
</BESAPI>

jsonML的输出如下所示:

[ 'BESAPI',                                                                                                           
  [ 'Computer', { ID: 'abc123' } ],                                                                                   
  [ 'Computer', { ID: 'def987' } ] ]

它与你给我们的JSON不相似,但试图解析它会给出你提出的错误。

所以我猜测jsonML的输出不是可解析的JSON,而是一个嵌套的排序数组。