[英]How can I access JSON using data['file.file']?
我可以使用var x = data.file.file查询我的数据; 但是,我将file.file作为字符串,data ['file.file']失败。 有没有办法做到这一点,还是我需要拆分字符串并递归走路?
data['file.file']
指向名为'file.file'的数据属性,而data.file.file
指向数据属性文件的属性文件。
使用data['file']['file']
来实现与data.file.file
相同的访问
更新:
当然,您必须拆分字符串才能使用多数组访问方法。 在你的情况下,这可能是这样的:
var path = 'file.file'
var pathElems = path.split('.')
// access field
data[pathElems[0]][pathElems[1]]
如果不使用eval(你绝对应该避免使用),你必须拆分字符串。 像这样的东西应该工作正常:
var data = {
file: {
file: 'YAY'
}
};
getProp(data, 'file.file'); // "YAY"
setProp(data, 'file.newprop.blop', 7); // false
setProp(data, 'file.newprop', {}); // true
setProp(data, 'file.newprop.blop', 7); // true
console.log(data); // {file: {file: "YAY", newprop: {blop: 7}}}
function getProp(obj, path){
var parts = path.split('.'), u, i;
for(i = 0; i < parts.length; i++){
obj = obj[parts[i]];
if(obj === u) return u;
}
return obj;
}
function setProp(obj, path, newValue){
var parts = path.split('.'), u, i;
for(i = 0; i < parts.length - 1; i++){
obj = obj[parts[i]];
if(obj === u) return false;
}
obj[parts[i]] = newValue;
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.