首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nodejs中解析json树

问在nodejs中解析json树
EN

Stack Overflow用户
提问于 2012-12-27 18:54:32
回答 3查看 6.2K关注 0票数 3

我需要解析一个放在文件中的json并确定它的结构,下面是我尝试这样做的代码。

代码语言:javascript
复制
var fs = require('fs')
var reqTemplate;
var obj;
fs.readFile('SampleData.js', 'utf8', function (err, data) {
    if (err) {
        return console.log(err);
    }
    reqTemplate = data;
    console.log('\nRequestTemplate:\n\n%s\n', reqTemplate);
    obj = JSON.parse(reqTemplate);
    var i = 0;
    console.log(Object.keys(obj));
    Object.keys(obj).forEach(function (key) {
        i++;
        console.log;
        console.log(key);
        console.log(obj[key]);
    });
});

我得到的输出是:

代码语言:javascript
复制
{
    "AuthenticateUserReq": {
        "Tid": "123",
        "username": "131329",
        "password": "Vinod",
        "SessionTokenId": "",
        "DeviceInfo": {
            "DeviceName": "ABC",
            "DeviceVersion": "X",
            "UniqueDeviceID": "ZZZ",
            "Platform": "AND"
        }
    }
}

我能够获得父键及其值。

我陷入了如何识别子键和检索它的值的问题上。

PS:我不知道json响应的结构。我需要识别根键和它的值,以及子键和它们的值。

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-27 19:11:03

对于tree traversal,您将需要递归

代码语言:javascript
复制
var callback = console.log;

function traverse(obj) {
    if (obj instanceof Array) {
        for (var i=0; i<obj.length; i++) {
            if (typeof obj[i] == "object" && obj[i]) {
                callback(i);
                traverse(obj[i]);
            } else {
                callback(i, obj[i])
            }
        }
    } else {
        for (var prop in obj) {
            if (typeof obj[prop] == "object" && obj[prop]) {
                callback(prop);
                traverse(obj[prop]);
            } else {
                callback(prop, obj[prop]);
            }
        }
    }
}

traverse( JSON.parse(reqTemplate) );
票数 4
EN

Stack Overflow用户

发布于 2012-12-28 22:15:07

可能还想尝试使用Node traverse - https://github.com/substack/js-traverse。允许递归遍历JSON树以获取每个带有上下文的键值对(例如:跟踪父项),并且可以在遍历树时运行map/reduce。非常强大。

票数 2
EN

Stack Overflow用户

发布于 2012-12-27 19:24:41

当您解析JSON时,您会得到一个普通的JS对象。您可以使用var keysOfObject = Object.keys(object);获取其密钥。然后,您可以使用这些键来获取值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14053509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档