Javascript 如何通过jQuery指定变量在JSON中查找值

Javascript 如何通过jQuery指定变量在JSON中查找值,javascript,jquery,json,Javascript,Jquery,Json,我有一个简单的JSON {"places" : { "home" : { "1": "red" } }} 我需要得到1值,该值取决于某个变量,该变量是我的body类。身体等级是可变的。这是我的剧本: (function(){ var bodyClass = $('body').attr('class'); function getPlaceValue(){ return $.getJSON('data.json', fun

我有一个简单的JSON

{"places" : {
    "home" : {
        "1": "red"
    }
}}
我需要得到
1
值,该值取决于某个变量,该变量是我的body类。身体等级是可变的。这是我的剧本:

(function(){    
    var bodyClass = $('body').attr('class');
    function getPlaceValue(){
        return $.getJSON('data.json', function(data) {
            var placeValue;
            placeValue = data.places.bodyClass.1;
            return placeValue;
        });
    }

    getPlaceValue().done(function(placeValue){
        console.log(placeValue);
    });
}).call(this);

我的回答是
1
值未定义。出了什么问题,有可能这样做吗?

您将
bodyClass
定义为变量:

var bodyClass = $('body').attr('class');
。。。但是,请尝试读取literal
bodyClass
属性,该属性当然不存在:

placeValue = data.places.bodyClass.1;
此外:

对象属性名称可以是任何有效的JavaScript字符串,或 可以转换为字符串的任何内容,包括空字符串 一串但是,任何不是有效JavaScript的属性名称 标识符(例如,具有空格或连字符的属性名称, 或以数字开头)只能使用正方形访问 括号符号。当属性为 名称是动态确定的(当属性名称不是 直到运行时才确定)

我想你的意思是:

placeValue = data.places[bodyClass][1];

数据。放置[bodyClass][1]
。而且我认为你不能
返回placeValue从回调内部..getjson是非阻塞的。它将在ajax调用有机会走出大门或产生任何结果之前立即返回。您的
返回位置值
将无处可返回。此外,可能存在重复,
[1]
,而不是
.1
:-p将有未定义的
1
@RocketHazmat-正确,很抱歉忽略此内容。我添加了适当的引用。如何将浏览器作为值而不是对象获取?现在从
data.places[bodyClass]
我有一个object@Lukas-是,
data.places[bodyClass][1]
是字符串,
data.places[bodyClass]
是对象。你希望它是什么?