【问题标题】:Cannot Read JSON Array Within JSON Array Using jQuery $.getJSON无法使用 jQuery $.getJSON 读取 JSON 数组中的 JSON 数组
【发布时间】:2016-08-26 13:04:43
【问题描述】:

我无法在 JSON 对象中获取 JSON 数组的项目。这是我的 JSON 的样子:

[
{
    "category":9,
    "channels":[
        {
            "id":5,
            "title":"MYTITLE",
            "active":true,
            "recent":true,
            "image":"/arts/736c1ad4-2dbe-40a6-859d-8dba89c26ec2.jpg",
            "recent_tracks":{
                "vip":"https://api.xyzsite.com/recent_tracks/vip-3.json",
                "free":"https://api.xyzsite.com/recent_tracks/free-3.json"
            },
            "additional_vip_channels":[
                {
                    "channel_name":"vip-3a",
                    "recent_tracks_uri":"https://api.xyzsite.com/recent_tracks/vip-3a.json",
                    "streams":{
                        "320":"http://streams.xyzsite.com/api/914/320/stream",
                        "64":"http://streams.xyzsite.com/api/914/64/stream",
                        "192":"http://streams.xyzsite.com/api/914/192/stream"
                    }
                }
            ],
            "streams":{
                "free":"http://streams.xyzsite.com/api/31/56/stream",
                "free_56":"http://streams.xyzsite.com/api/31/56/stream",
                "free_128":"http://streams.xyzsite.com/api/31/128/stream",
                "320":"http://streams.xyzsite.com/api/33/320/stream",
                "64":"http://streams.xyzsite.com/api/33/64/stream",
                "192":"http://streams.xyzsite.com/api/33/192/stream"
            }
        },

我使用以下代码来获取值:

$.getJSON('https://api.xyzsite.com/channels.json', function(response) {
            $.each(response, function (index, value) {
                var catId = value.category;
                $.each(value.channels, function (index, value) {                        
                    XYZApp.channels.push({
                        categoryId: catId,
                        id: value.id,
                        name: value.title,
                        image: value.image,
                        recent_tracks: {
                            vip: value.recent_tracks.vip,
                            free: value.recent_tracks.free
                        },
                        streams: {
                            free_128: value.streams.free_128,
                            member_320: value.streams["320"],
                            member_64: value.streams["64"],
                            member_192: value.streams["192"]
                        }
                    });

                    console.log(value.additional_vip_channels);

                });

            });
        }).
then ...

我可以获取值,但我无法读取 .each jQuery 函数中的 additional_vip_channels 数组。我已经试过了:

  • value.additional_vip_channels.channel_name
  • value.additional_vip_channels[0].channel_name
  • value.additional_vip_channels["0"].channel_name

但它们都不起作用。

而且日志输出也在这里:

如何获取additional_vip_channels中的channel_name等数据?

【问题讨论】:

  • value.additional_vip_channels[0].channel_name 是正确的方法。
  • 试试value.channels["0"].additional_vip_channels["0"].channel_name
  • 日志按预期显示值然后尝试输出 additional_vip_channels 的单个值有什么问题。
  • 谢谢,但这两个建议都不起作用。我得到:未捕获的类型错误:无法读取未定义的属性“0”
  • 嗯,有些值可能没有additional_vip_channels 属性。在访问之前确保 additional_vip_channels 存在。

标签: javascript jquery arrays json getjson


【解决方案1】:

我相信你会想要:

channels[0]['additional_vip_channels'][0]['channel_name']

同样,这应该有效:(只是选择不同的方式)

channels[0].additional_vip_channels[0].channel_name

希望能有所帮助和工作:)

【讨论】:

  • value.channels[0].additional_vip_channels[0].channel_name 不起作用,我得到:Uncaught TypeError: Cannot read property '0' of undefined
  • @burakk 你试过另一个例子吗?我在手机上,所以无法测试自己,抱歉。
猜你喜欢
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多