2

我的代码

function getUIContent(){
    alert('hi');
    var jsn = '{"channels":[{"name":"video1","image":"images/bodyguard.jpg"},{"name":"video2","image":"images/bodyguard.jpg"},{"name":"video3","image":"images/bodyguard.jpg"},'+
    ']}';
}

现在我想访问频道的名称

我试过了

var channels = jsn.channels[0].name;
alert(channels);

但它给出了错误。我也想知道如何获得通道的长度。

我是 javascript 开发的新手。我尝试了很多,但我没有得到答案。

任何人都可以在这方面帮助我。

4

5 回答 5

6

您必须删除前导标记和尾'标记,以便您的 JSON 成为对象而不是字符串。正如其他人提到的那样,删除最后一个逗号,

所以代替这个:

var jsn = '{"channels":[{"name":"video1","image":"images/bodyguard.jpg"},{"name":"video2","image":"images/bodyguard.jpg"},{"name":"video3","image":"images/bodyguard.jpg"},'+
    ']}';

你有这个:

var jsn = {"channels":[{"name":"video1","image":"images/bodyguard.jpg"},{"name":"video2","image":"images/bodyguard.jpg"},{"name":"video3","image":"images/bodyguard.jpg"}]};
于 2013-06-17T09:20:49.740 回答
1

您在(对象),的末尾有一个拖尾(逗号)。{}

它应该是:

var jsn = '{"channels":[{"name":"video1","image":"images/bodyguard.jpg"},{"name":"video2","image":"images/bodyguard.jpg"},{"name":"video3","image":"images/bodyguard.jpg"}'+
                 ']}';
于 2013-06-17T09:17:44.640 回答
1

首先,json 对象是有效的。

{
    "channels": [
        {
            "name": "video1",
            "image": "images/bodyguard.jpg"
        },
        {
            "name": "video2",
            "image": "images/bodyguard.jpg"
        },
        {
            "name": "video3",
            "image": "images/bodyguard.jpg"
        }, //   <-------------remove this comma

    ]
}

其次,此时这是一个 Json 字符串,必须将其反序列化为一个对象,以便我们可以使用该.符号访问其属性。这可以通过使用JSON.parse()大多数现代浏览器中包含的方法来完成。

var obj = JSON.parse(jsn);

然后从对象访问属性,如下所示:

var size = obj.channels.length;

在您的 Javascript 开发过程中,如果您遇到更多 JSON 错误,您可能需要使用JsonLint 工具,该工具允许您通过将 json 复制并粘贴到网站中来验证它。

工作示例:http: //jsfiddle.net/3v2z3/

于 2013-06-17T09:18:19.413 回答
1

尝试删除最后一个 ',' 以使其成为有效的 JSON:

  var jsn = '{"channels":[{"name":"video1","image":"images/bodyguard.jpg"},{"name":"video2","image":"images/bodyguard.jpg"},{"name":"video3","image":"images/bodyguard.jpg"}'+
             ']}';

编辑:/当然你必须在使用这个字符串之前使用 JSON.parse 就像这里:http: //jsfiddle.net/4j3Rh/

于 2013-06-17T09:17:23.570 回答
-1

试试下面,

var jsn = '{"channels":[{"name":"video1","image":"images/bodyguard.jpg"},{"name":"video2","image":"images/bodyguard.jpg"},{"name":"video3","image":"images/bodyguard.jpg"}]}'; 

var obj = jQuery.parseJSON(jsn); //If jquery used [or]

var obj = JSON.parse(jsn);

alert(obj.channels[0]["name"]);
于 2013-06-17T09:23:20.963 回答