var jsonObj={"kuaile":[{"sdf":"sdftest","ddd":"sddds"},{"sdf":"sddd"}],"sdfdd":"sdfdd","sdfdddd":[{"sdfdd":"sdfd"}]};
var kk="[kuaile][0][sdf]";
//kk是从一个函数中获取的
//如何获取jsonObj的值中的“sdftest”
//jsonObj+kk这种格式不正确
也就是解析字符串kk,得到各层的key的名字或索引,然后json对象一层层读取下去。
var kk=jsonObj.kuaile[0].sdf; 这样得到的值就是sdftest了
var jsonObj = { "kuaile": [{ "sdf": "sdftest", "ddd": "sddds" }, { "sdf": "sddd" }], "sdfdd": "sdfdd", "sdfdddd": [{ "sdfdd": "sdfd" }] };
var kk = "[kuaile][0][sdf]";//你的格式有错,字符串件名称应该返回["kuaile"][0]["sdf"]这种,需要用下面的代码处理下
kk = kk.replace(/\[([^\]]+)\]/g, function ($0, $1) { alert($1); if (/^\s*\d\s*$/i.test($1)) return '['+$1+']'; return '["'+$1+'"]' });
var keyValue = eval('jsonObj' + kk);
alert(keyValue)
一层一层读 主要是理解json数据的格式 也不知道 你是怎么构建json的 json格式类似于键值对
不知道你到底是不是需要获取sdftest的值,如果是的话,这个链接可以帮助你:http://blog.csdn.net/xuanzhangran/article/details/60866665
var ary=kk.match(/([^][]+)(?=])/g);
var vl=jsonObj;
for(var i=0;i<ary.length;i++){
vl=vl[ary[i]];
}
alert(vl);
alert(jsonObj['kuaile'][0]['sdf'])