我正在编写一个函数,它接受一个字符串,拆分它,并使用json[key][key2][key3]
格式。问题是n可能是无限的(不是字面上的,但需要以这种方式编写)
function getJsonValue(json,string) {
var vals = string.split(".");
var x = vals.length;
var string = '';
while (x != 0) {
string += "['"+vals[(vals.length-x)]+"']"
x--
}
return string;
}
这将产生,例如:"['condition']['item']['condition']['temp']"
我需要通过将其附加到json对象(例如
)来从中提取值json"['condition']['item']['condition']['temp']"
但我不知道如何甚至可能。
编辑: 问题是我需要传入配置文件中的任何值,然后从返回的函数中解析。即用户知道该特定查询的值为condition.item.condition.temp。我正在尝试编写一个涵盖所有内容的函数,并为我知道的输出传递配置值。因此,在一个查询中,我可能需要condition.item.condition.temp值,而在另一个查询中,我可能需要condition.wind.chill。
答案 0 :(得分:2)
我不确定我是否100%理解你要做的事情,但是如果你收到一个JS对象json
和一个格式为field1.field2.field3
的字符串并试图获取json.field1.field2.field3
的值,那么你可以这样做:
function getJsonValue(json,string) {
var vals = string.split(".");
for (var i = 0; i < vals.length; i++) json = json[vals[i]];
return json;
}
对于给定的对象,它会像这样工作:
var obj = { field1: { field2: { field3: "Hello!" } } };
var res = getJsonValue(obj, "field1.field2.field3");
console.log(res); // prints Hello
答案 1 :(得分:0)
答案 2 :(得分:0)
做一个评估怎么样?
var json = {
'one': {
'two': {
'three': {
'four': 4
}
}
}
};
alert(eval("json['one']['two']['three']['four']"))