Javascript 解析nodejs中的json树
我需要解析放在文件中的json,并确定其结构,下面是我尝试这样做的代码Javascript 解析nodejs中的json树,javascript,json,node.js,Javascript,Json,Node.js,我需要解析放在文件中的json,并确定其结构,下面是我尝试这样做的代码 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('\nRequestT
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]);
});
});
我得到的结果是:
{
"AuthenticateUserReq": {
"Tid": "123",
"username": "131329",
"password": "Vinod",
"SessionTokenId": "",
"DeviceInfo": {
"DeviceName": "ABC",
"DeviceVersion": "X",
"UniqueDeviceID": "ZZZ",
"Platform": "AND"
}
}
}
我能够获取父项及其值。我被困在如何识别子键和检索其值的问题上 PS:我不知道json响应的结构。我需要识别根键及其值,以及子键及其值
任何帮助都将不胜感激。您需要递归:
var callback=console.log;
函数遍历(obj){
if(阵列的obj实例){
对于(var i=0;i当您解析JSON时,您会得到一个普通的JS对象。您可以通过使用var keysOfObject=object.keys(object);
来获取其键。然后您可以使用这些键来获取值。可能还希望尝试节点遍历-。允许递归遍历JSON树,以获取具有上下文的每个键值对(即:跟踪父对象),可以在遍历树时运行map/reduce。非常强大。为什么需要手动迭代对象?您想要的对象不是简单的JSON.parse(reqTemplate)吗
?@Cerbrus:这只是给了我全部的回答。我想得到各个键及其值。啊,我明白了。Bergi的答案就是这样:P:谢谢,我尝试了你的解决方案,并且能够得到所需的输出。是的,当我尝试dat时,我能够从上面的json中得到oly父键,比如AuthenticateSERREQ。但是我还想t获取设备信息(即)在上面的方法中,父键中的主键不会被检索,但是你的目的是什么?为什么你想遍历JSON?寻找什么?或者你只是想打印出来?我想遍历JSON,将它的键存储在数据库中,而且我应该能够通过从数据库中检索JSON的内容来恢复JSON的原始形式B
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) );