JSON Javascript - 属性映射 - 函数引用

时间:2011-05-07 21:57:56

标签: javascript json

我在Javascript中有一个JSON对象,如下所示:

var myjson={"name":"myname","address":"Myaddress"}
// if my json is not empty: 
         //do something

我想查找对象是否为空,即是否存在任何键。我怎么能在Javascript中做到这一点?

通过谷歌搜索徒劳搜索,但很难说有什么搜索垃圾(不相关)的信息。

是否有任何官方参考资料(包括删除密钥)?或者我应该与谷歌搜索斗争(对我没有帮助)并希望获得一些相关信息?

3 个答案:

答案 0 :(得分:6)

如果你有ECMAScript 5:

Object.keys(myjson).length

将告诉您对象中存在多少(可枚举的)属性。

请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys,如果您的浏览器本身不支持,您还可以在自己的代码中添加一个版本。

答案 1 :(得分:4)

查找JavaScript对象是否为空的最佳方法是使用Object.keys,它返回对象键的数组(而不是值)。

Object.keys({foo: "bar"}) // returns ["foo"]

Object.keys({}) // returns []

因此,判断对象是否具有键的简单方法是计算该数组的长度:

if(Object.keys(myjson).length) {
    // this object has keys!
}

答案 2 :(得分:0)

正如其他答案所述,Object.keys()应该可以解决问题,但不适用于不支持ECMAScript 5的旧浏览器。这是一个应该跨浏览器工作的快速测试功能:

function isEmpty(o) {
    // check all keys in the object
    for (var key in o) {
        // but don't go up the prototype chain
        if (o.hasOwnProperty(key)) {
            // if found, stop right away
            return false;
        }
    }
    return true;
}

如果你是那种喜欢更严格,更简洁的代码的人,你可以这样写:

function isEmpty(o) {
    for (var key in o) if (o.hasOwnProperty(key)) return false;
    return true;
}