javascript通过拼接从json数据里获取特定内容

1.这是我的json字符串

{

"综合指数分析":
    {    "预测分析":
        {    "预测模型":"1111111111111111",
            "预测值":"2222222",
            "预测指数图":"33333"
        },
        "综合系统预警图":"44444444",
        "指标权值":"5555",
        "趋势图":"0000000000",
        "隶属度":"9999999",
        "指标标准":"8888",
        "指标预警图":"7777777",
        子系统预警图":"6666"
    }

}

2.我的需求
通过类似 jsonStr"综合指数分析"["预测模型"] 获取json字符串中的数字串,由于我想动态获取jsonStr中的内容,比如需要"趋势图"的“0000000000”时就拼接出
jsonStr["综合指数分析"]["趋势图"].

3.我的代码

function getMenuContent(jsonStr){
    $(".folder").each(function(){
        $(this).click(function(){
            var arr=new Array();//保存父级元素文本内容
            var txt=$(this).text();//点击元素文本内容
            var rbleft=$("#right-bottom-left");            
            var parentEls=$("span:contains("+txt+")").parents().filter("li").map(function(){
                if(this.tagName=="LI"){//this.tagName=="UL"||"LI"
                    var obj=$(this).children("span").first().clone();
                    console.log(obj.html());//输出父级元素的文本内容
                    arr.push(obj.html());
                    return this.tagName;
                }
            })
            var content=getJsonStr(arr);
            console.log("jsonStr"+content+"");
            rbleft.text(jsonStr+""+content+"");// 如何通过拼接实现动态获取jsonStr的内容?????
            return arr;
        })
    })
}


//拼接获取json字符串的表达式,像jsonStr["综合指数分析"]["预测分析"] 
function getJsonStr(arr){
    var str="";//存储获取json字符串的表达式
    for(var i=0;i<arr.length;i++){
        str+='["'+arr[i]+'"]';
    }
    return str;
}


4.如同3中有一行注释有5个问号,请问如何解决这个需求?
我需要做成比递归遍历更加灵活的操作,就是比如需要哪个数据直接就是哪个数据。
我是把json数据做成了菜单,点击菜单就直接获取那个菜单的数据。比如点击"预测值",
然后就从json数据里拿到"预测值"的"2222222"。我一直认为要从json里拿到
"预测值"的"2222222",需要先知道"预测值"的父级"预测分析"和"综合指数分析",
然后通过jsonStr["综合指数分析"]["预测分析"]["预测值"]获取到数据"2222222"。
请问这个思路对吗?有更好的思路吗?
阅读 3.3k
3 个回答
  function getJsonStr(jsonStr,arr) {
                    for (var i = 0; i < arr.length; i++) {
                        jsonStr =jsonStr[arr[i]];
                    }
                    return jsonStr;
                }

str+='["'+arr[i]+'"]';这样子是获取不到数据的

你这太复杂了,如果是个合法的json字符串,那么直接用JSON.parse(str)转成一个对象,然后用obj"综合指数分析"

简单点就用eval

var arr = { "name": "zhangsan" }
var str = "arr['name']"

console.log(eval(str))

function _eval(str) {
    return new Function("return " + str)()
}
console.log(_eval(str))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题