Javascript 如何选择JSON对象中使用的字符串格式的键:值对?

Javascript 如何选择JSON对象中使用的字符串格式的键:值对?,javascript,json,object,key,Javascript,Json,Object,Key,我想选择长度,但它是字符串形式。沿着attribs.length的线条,但没有返回任何内容 attribs: { "length": ""4"", "nightride": "null" } 我试着把它分开再重新加入,但不管怎样我都得不到我想要的。 我也试过attribs[length]和attribs[“length”],但都没有用 以下是它的主要来源: { 地点:[ { 城市:“博伊西”, 州:“爱达荷州”, 国家:“美国”, 名称:“麋鹿草地”, 父项id:null,

我想选择长度,但它是字符串形式。沿着attribs.length的线条,但没有返回任何内容

attribs: {
    "length": ""4"",
    "nightride": "null"
}
我试着把它分开再重新加入,但不管怎样我都得不到我想要的。 我也试过attribs[length]和attribs[“length”],但都没有用

以下是它的主要来源:

{
地点:[
{
城市:“博伊西”,
州:“爱达荷州”,
国家:“美国”,
名称:“麋鹿草地”,
父项id:null,
唯一识别号:1637,
方向:“从博伊西的北端(山路和假山盆地路的交叉口),沿假山盆地路向北行驶约16.5英里。路面在下(主)端结束Bogus Creek Lodge附近的停车场。沿着Boise Ridge路行驶。离开主山脊路时,沙面变成路面。然后向右分离,通过一系列开关返回Pioneer Lodge milage,从这里开始“,
拉脱维亚:43.764,
lon:-116.10324,
description:null,
创建日期:空,
儿童:[],
活动:[{
名称:“麋鹿草地”,
唯一标识:“1-118”,
地点:1637,,
活动类型标识:5,
活动类型名称:“山地自行车运动”,
url:“http://www.singletracks.com/item.php?c=1&i=118",
属性:{
“长度”:“4”,
“夜车”:“空”
},
描述:“在先锋小屋后面向东行驶,经过左侧的网球场。双轨变得更加清晰”,
长度:4,
活动类型:{
创建于:“2012-08-15T16:12:35Z”,
id:5,
名称:“山地自行车运动”,
更新地址:“2012-08-15T16:12:35Z”
},
缩略图:“http://images.singletracks.com/2010/11/Elk-Meadows-on-the-Ranier-0.jpg",
等级:空,
评级:3
}
]

},
由于
length
属性周围有一组额外的引号,因此可以使用
JSON.parse
将其解析为字符串

JSON.parse(obj.attribs.length);
要将其转换为一个数字,请使用
parseInt()
。这样它就变成:

var length = parseInt(JSON.parse(obj.attribs.length), 10);

由于
length
属性周围有一组额外的引号,因此可以使用
JSON.parse
将其解析为字符串

JSON.parse(obj.attribs.length);
要将其转换为一个数字,请使用
parseInt()
。这样它就变成:

var length = parseInt(JSON.parse(obj.attribs.length), 10);

您的JSON无效。JSON应该始终是单个数组或单个对象

这是一个正确的JSON:

{
    "attribs": {
        "length": "4",
        "nightride": "null"
}
因此,您可以:

  • 向API提供程序的支持写信或停止使用此API。在99%的情况下,这是一个合适的解决方案

  • 做一些非常糟糕的黑客。我不建议在任何情况下这样做。但是,这可以解决问题。就像这样:

    .done(function(data) {
         data = "{" + data.replace("\"\"", "\"") + "}";
    
        var obj = JSON.parse(data);
        alert(obj.attribs.length);
    });
    

  • 您的JSON无效。JSON应该始终是单个数组或单个对象

    这是一个正确的JSON:

    {
        "attribs": {
            "length": "4",
            "nightride": "null"
    }
    
    因此,您可以:

  • 向API提供程序的支持写信或停止使用此API。在99%的情况下,这是一个合适的解决方案

  • 做一些非常糟糕的黑客。我不建议在任何情况下这样做。但是,这可以解决问题。就像这样:

    .done(function(data) {
         data = "{" + data.replace("\"\"", "\"") + "}";
    
        var obj = JSON.parse(data);
        alert(obj.attribs.length);
    });
    

  • 如果attribs是一个实际的javascript对象,并且需要attribs.length的数值

    var x = parseFloat(attribs.length.replace(/"/g,''));
    

    如果attribs是一个实际的javascript对象,并且需要attribs.length的数值

    var x = parseFloat(attribs.length.replace(/"/g,''));
    

    好了,大家好!我很难为情以前没有看到这个,但是在我所看到的对象响应下面有两个键:值对

    attribs:{
    “长度”:“4”,
    “夜车”:“空”
    },

    还有另一个关键点:我们都知道并且喜欢的标准值格式中的距离值对:

    attribs:{
    “长度”:“4”,
    “夜车”:“空”
    },
    描述:“在先锋小屋后面向东行驶,经过左侧的网球场。双轨变得更加清晰”,
    长度:4,

    强调

    长度:4,

    当然,我把我的符号指向了这一点


    Jaromanda X的回答最直接,在我看来,也是最清晰/准确/准确的,所以他接受了检查。

    好了,各位!我很不好意思以前没有看到这一点,但在我所看到的对象响应的下面有两个键:值对

    attribs:{
    “长度”:“4”,
    “夜车”:“空”
    },

    还有另一个关键点:我们都知道并且喜欢的标准值格式中的距离值对:

    attribs:{
    “长度”:“4”,
    “夜车”:“空”
    },
    描述:“在先锋小屋后面向东行驶,经过左侧的网球场。双轨变得更加清晰”,
    长度:4,

    强调

    长度:4,

    当然,我把我的符号指向了这一点


    在我看来,Jaromanda X的回答最直接、最清晰、最精确、最准确,所以他接受了检查。

    使用
    JSON.parse
    var obj=JSON.parse(jsonString);alert(obj.length);
    似乎不是有效的JSON,带有
    “4”“
    那不是字符串形式,那是无效的form我也这么想,但它是从API来的。它是从API来的-我知道你现在使用的是
    JSON.parse
    var obj=JSON.parse(jsonString);alert(obj.length);
    似乎不是有效的JSON,带有
    ”4“
    那不是字符串形式,那是无效的form我也这么想,但它是从API来的。
    它是从API来的
    -我明白了