NodeJS中的Parse Json文件在Node中显示意外结果

Parse Json File in NodeJS displays unexpected results in Node

本文关键字:显示 意外 结果 Node 中的 Parse Json 文件 NodeJS      更新时间:2023-09-26

我有下面的nodejs代码,它读取baseline.json文件的内容并对其进行解析。然后我尝试显示所有的计算机ID和LastReportTime。我看到了一个奇怪的行为——它不会打印所有的ID和LastReportTime。此外,每次运行的结果都不一样。json对我来说太大了,我可以在这里上传,所以我在json Blob上上传了它。

Nodejs代码

var fs = require('fs');
try {
    var json = JSON.parse(fs.readFileSync('baseline.json'));
    for (var obj in json) {
        if (json.hasOwnProperty(obj)) {
            console.log(obj);
            console.log("'n 'n");
            if (obj == "BESAPI") {
                for (var prop in json[obj]) {
                    console.log(prop);
                    if (prop == "Computer") {
                        // loop over Computer dataseries
                        for (var id in json[obj][prop]) {
                            console.log(prop + ':' + json[obj][prop][id].ID);
                            console.log(prop + ':' + json[obj][prop][id].LastReportTime);
                        }
                    }
                }
            }
        }
    }
} catch (err) {
    console.error(err);
}

原始JSON

https://gist.github.com/anonymous/f27f75879e48c5387a03

在发布的数组中,LastReportTime和ID是数组。

试试这些线路:

console.log(prop + ':' + json[obj][prop][id].ID[0]);
console.log(prop + ':' + json[obj][prop][id].LastReportTime[0]);

如果你打印得很漂亮,你可以看到数据有两种风格,顶部部分后面是标准形式的数据余额,重复177次

{
    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"
                ]
            },
            {
                $: {
                    Resource: "api/computer/11736335"
                },
                LastReportTime: [
                    "Thu, 26 Feb 2015 14:54:41 +0000"
                ],
                ID: [
                    "11736335"
                ]
            },

我剪掉了她很多行,但它以正常结束

            {
                $: {
                    Resource: "api/computer/5520740"
                },
                LastReportTime: [
                    "Thu, 12 Feb 2015 02:49:11 +0000"
                ],
                ID: [
                    "5520740"
                ]
            }
        ]
    }
}

使用nodejs,您可以使用进行漂亮的打印

var pretty_print = require('js-object-pretty-print').pretty;

var parsed_data = JSON.parse(data_from_file);
console.log(pretty_print(parsed_data)); // good pretty print