Javascript 在节点js中处理json

Javascript 在节点js中处理json,javascript,node.js,json,node-modules,Javascript,Node.js,Json,Node Modules,我正在节点js中编写一个函数,它接受2个参数——“param1”是“jsonObj”&“param2”是“xpath”(作为字符串),但当我尝试使用jsonObj.xpath提取值时,我得到的结果是未定义的,因为它在json对象中寻找xpath作为键,而不是cDel.dInfo.env。有人能告诉我如何从jsonObj中提取cDel.dInfo.env的值吗 下面是示例代码- const json = '{ "cDel": { "dInfo": { &qu

我正在节点js中编写一个函数,它接受2个参数——“param1”是“jsonObj”&“param2”是“xpath”(作为字符串),但当我尝试使用jsonObj.xpath提取值时,我得到的结果是未定义的,因为它在json对象中寻找xpath作为键,而不是cDel.dInfo.env。有人能告诉我如何从jsonObj中提取cDel.dInfo.env的值吗

下面是示例代码-

const json = '{ "cDel": { "dInfo": { "env": "ACCEPTANCE", "ref": 103163 } } }';
const obj = JSON.parse(json);

var getValue = (jsonObj,xpath) => {
       return jsonObj.xpath;
}

console.log(getValue(obj,"cDel.dInfo.env"));
输出未定义。
预期的输出是可接受的。

它不是这样工作的。必须分别读取
xpath
中的每个属性。比如:

const obj=JSON.parse('{“cDel”:{“dInfo”:{“env”:“ACCEPTANCE”,“ref”:103163}}');
const getValue=(jsonObj,xpath)=>{
const path=xpath.split(“.”);
设value=jsonObj;
while(路径长度){
value=value[path.shift()];
}
返回值;
}

log(`obj.cDel.dInfo.env=>${getValue(obj,“cDel.dInfo.env”)}`)它不是这样工作的。必须分别读取
xpath
中的每个属性。比如:

const obj=JSON.parse('{“cDel”:{“dInfo”:{“env”:“ACCEPTANCE”,“ref”:103163}}');
const getValue=(jsonObj,xpath)=>{
const path=xpath.split(“.”);
设value=jsonObj;
while(路径长度){
value=value[path.shift()];
}
返回值;
}
log(`obj.cDel.dInfo.env=>${getValue(obj,“cDel.dInfo.env”)}`)您可以使用Lodash的

var object={'a':[{'b':{'c':3}]};
_.get(对象'a[0].b.c');
// => 3
_.get(对象,['a','0','b','c']);
// => 3
_.get(对象'a.b.c','default');
//=>“默认值”
您可以使用Lodash的

var object={'a':[{'b':{'c':3}]};
_.get(对象'a[0].b.c');
// => 3
_.get(对象,['a','0','b','c']);
// => 3
_.get(对象'a.b.c','default');
//=>“默认值”

如果您还没有使用lodash,我也建议您使用lodash,而不是重新发明轮子。如果您只想
从lodash获得
,请使用感谢回复。Lodash对我来说效果很好。如果你还没有使用它,我也建议你使用Lodash,而不是重新发明轮子。如果你只想
从Lodash获得
,请感谢你的回复。洛达斯对我很好。谢谢你的回复。上面的代码对于没有数组的json很好。因为我想写泛型函数,所以我认为lodash符合我的要求。你的问题没有提到JSonTanks中的数组。上面的代码对于没有数组的json很好。因为我想写泛型函数,所以我认为lodash符合我的要求