javascript - 如何使用 Javascript 读取 JSON 数组以获取值(如果存在)

标签 javascript java php arrays json

这是我的 JSON 代码。我将此 json 存储在一个数组中。

{
"kind": "urlshortener#url",
"id": "http://goo.gl/2FIrtF",
"longUrl": "http://hike.com/?utm_source=facebook",
"status": "OK",
"created": "2015-09-22T13:45:53.645+00:00",
"analytics": {
    "allTime": {
        "shortUrlClicks": "1",
        "longUrlClicks": "1",
        "referrers": [
            {
                "count": "1",
                "id": "unknown"
            }
        ],
        "countries": [
            {
                "count": "1",
                "id": "IN"
            }
        ],
        "browsers": [
            {
                "count": "1",
                "id": "Chrome"
            }
        ],
        "platforms": [
            {
                "count": "1",
                "id": "Macintosh"
            }
        ]
    },
    "month": {
        "shortUrlClicks": "1",
        "longUrlClicks": "1",
        "referrers": [
            {
                "count": "1",
                "id": "unknown"
            }
        ],
        "countries": [
            {
                "count": "1",
                "id": "IN"
            }
        ],
        "browsers": [
            {
                "count": "1",
                "id": "Chrome"
            }
        ],
        "platforms": [
            {
                "count": "1",
                "id": "Macintosh"
            }
        ]
    },
    "week": {
        "shortUrlClicks": "1",
        "longUrlClicks": "1",
        "referrers": [
            {
                "count": "1",
                "id": "unknown"
            }
        ],
        "countries": [
            {
                "count": "1",
                "id": "IN"
            }
        ],
        "browsers": [
            {
                "count": "1",
                "id": "Chrome"
            }
        ],
        "platforms": [
            {
                "count": "1",
                "id": "Macintosh"
            }
        ]
    },
    "day": {
        "shortUrlClicks": "0",
        "longUrlClicks": "0"
    },
    "twoHours": {
        "shortUrlClicks": "0",
        "longUrlClicks": "0"
    }
},
"result": {
    "kind": "urlshortener#url",
    "id": "http://goo.gl/2FIuvF",
    "longUrl": "http://hike.com/?utm_source=facebook",
    "status": "OK",
    "created": "2015-09-22T13:45:53.645+00:00",
    "analytics": {
        "allTime": {
            "shortUrlClicks": "1",
            "longUrlClicks": "1",
            "referrers": [
                {
                    "count": "1",
                    "id": "unknown"
                }
            ],
            "countries": [
                {
                    "count": "1",
                    "id": "IN"
                }
            ],
            "browsers": [
                {
                    "count": "1",
                    "id": "Chrome"
                }
            ],
            "platforms": [
                {
                    "count": "1",
                    "id": "Macintosh"
                }
            ]
        },
        "month": {
            "shortUrlClicks": "1",
            "longUrlClicks": "1",
            "referrers": [
                {
                    "count": "1",
                    "id": "unknown"
                }
            ],
            "countries": [
                {
                    "count": "1",
                    "id": "IN"
                }
            ],
            "browsers": [
                {
                    "count": "1",
                    "id": "Chrome"
                }
            ],
            "platforms": [
                {
                    "count": "1",
                    "id": "Macintosh"
                }
            ]
        },
        "week": {
            "shortUrlClicks": "1",
            "longUrlClicks": "1",
            "referrers": [
                {
                    "count": "1",
                    "id": "unknown"
                }
            ],
            "countries": [
                {
                    "count": "1",
                    "id": "IN"
                }
            ],
            "browsers": [
                {
                    "count": "1",
                    "id": "Chrome"
                }
            ],
            "platforms": [
                {
                    "count": "1",
                    "id": "Macintosh"
                }
            ]
        },
        "day": {
            "shortUrlClicks": "0",
            "longUrlClicks": "0"
        },
        "twoHours": {
            "shortUrlClicks": "0",
            "longUrlClicks": "0"
        }
    }
}

}

在上面的 JSON 中,我们如何获取分析 -> 天 -> 国家/地区的存在?

我想先知道这些国家是否存在于白天,如果不存在,则显示一些值。如果存在,它将尝试获取特定国家/地区的计数。

我在过去 5 个小时里一直在尝试这个,但没有任何运气。

if(arr.analytics.day.countries !== undefined) {
         function thingscount(arr, platf) {
           var x = arr.analytics.day.countries.map(function(el) {
           return (platf.indexOf(el.id) != -1) ? parseInt(el.count) : 0; });
           var count = 0;
           for (var i = 0; i < x.length; i++) count += x[i];
           return count; 
           }       

        var one = thingscount(arr, ["US"]); 

        }else{
           var one = 0;

        }

如果白天有国家/地区,上面的代码工作正常,但有时,在我的 JSON 中不会有平台部分,在这种情况下它会给我

Uncaught TypeError: Cannot read property 'map' of undefined

我需要一种方法来检查平台是否存在,是否进行计数,是否没有为变量提供其他值。

更新:

我使用下面的代码来获取 IN 的计数。

当它有 IN 键和值时,它就会给我结果。但是当它没有 IN 键时,它会显示“未定义计数”错误。

var Month_inclicks = arr.analytics.month.countries.filter(function(el) { return el.id == "IN"; })[0].count;

如果我们要查找的键不存在,如何设置默认值?

最佳答案

虽然这不是 JSON,但我假设它是一个 javascript 对象。话虽这么说,您需要考虑利用 hasOwnProperty 方法或 in 关键字。

示例:

if (arr.total.limited.hasOwnProperty('platforms')) { //do stuff

if ('platforms' in arr.total.limited) { //do something

关于javascript - 如何使用 Javascript 读取 JSON 数组以获取值(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783754/

相关文章:

javascript - HTML 头部中的两个脚本冲突 (Brython & iFlyChat)

javascript - Google Chrome 中的 jQuery 问题?淡入淡出

java - 接口(interface)中的通用方法返回未检查的强制转换

java - "Failed to resolve: com.google.firebase:firebase-core:9.0.0"

javascript - Cake PHP通过javascript更改隐藏表单项的值

php - 如何在php中将所有音频格式转换为mp3?

javascript - 在本地存储 Javascript 设置

javascript - Linkedin Oauth Javascript 授权 "uh oh!"

java - Android,创建 .mp3 文件的数组列表?

php - 如何使用PHP File API写入原始字节?