如何提取json响应?

时间:2016-12-02 03:27:31

标签: json

有人告诉我。

obj是一个JSON响应。

obj = { title: 'ABCD', _key: '-KX9Cwwuc2FjxcG-SNY0' }

我可以使用console.log(obj [“title”])获取ABCD。

复杂案件怎么样?

obj = { '-KXu3irrOjUtcejm4VF3': 
   { gold: 0,
     title: ‘xxxx09x@gmail.com',
     uketuke: 0,
    user: ‘xxxx09x@gmail.com' },
  '-KXu3vLo7--JeVYC9fJa': { title: ‘JUMP' },
  '-KXu3yRZgFlDcS8BZ7e1': { title: 'JUMP1' } }

在这种情况下,我如何获得用户实体?

顺便说一下这个obj [“title”]演示文稿,我认为这应该是ECMA标准, 请告诉我参考的地方?

2 个答案:

答案 0 :(得分:0)

如果你知道密钥,那就很容易了。例如:

obj = { 
    '-KXu3irrOjUtcejm4VF3': { 
        gold: 0,
        title: 'xxxx09x@gmail.com',
        uketuke: 0,
        user: 'xxxx09x@gmail.com' 
    },
    '-KXu3vLo7--JeVYC9fJa': { title: 'JUMP' },
    '-KXu3yRZgFlDcS8BZ7e1': { title: 'JUMP1' } 
}

var user_key = '-KXu3irrOjUtcejm4VF3'

user = obj[user_key].user
  

“xxxx09x@gmail.com”

但是,如果您不知道用户所在对象的密钥,则以下函数可以帮助渐近复杂度O(n):

function getUser(obj) {
    for (var key in obj) {
        // skip loop if the property is from prototype
        if (!obj.hasOwnProperty(key)) continue;
        if (typeof obj[key].user !== undefined) {
            return obj[key].user;
        }
    }
}

getUser(obj)
  

“xxxx09x@gmail.com”

最后我在其中一个项目中使用了一些内容: jsonpath

$..user

会从你的obj返回所有user。通过这种方式,您可以使用复杂的json恕我直言。

答案 1 :(得分:0)

需要做一些更正:

要从此JSON回复var obj = { title: 'ABCD', _key: '-KX9Cwwuc2FjxcG-SNY0' }访问属性值,您必须使用dot(.) operator而不是[]

如果您使用obj[title],它会为您提供错误:

  

未捕获的ReferenceError:未定义标题(...)

如果您使用obj.title,它会为您提供输出

ABCD

因此,根据复杂案例:

第一件事:字符串应该用双引号括起来。

无效的JSON:

var obj = { 
            '-KXu3irrOjUtcejm4VF3': { 
                                      gold: 0,
                                      title: 'xxxx09x@gmail.com',
                                      uketuke: 0,
                                      user: 'xxxx09x@gmail.com' 
                                    },
            '-KXu3vLo7--JeVYC9fJa': { title: ‘JUMP' },
            '-KXu3yRZgFlDcS8BZ7e1': { title: 'JUMP1' } 
          };

有效JSON:

var obj = {
    "-KXu3irrOjUtcejm4VF3": {
        "gold": 0,
        "title": "abc@gmail.com",
        "uketuke": 0,
        "user": "def@gmail.com"
    },
    "-KXu3vLo7--JeVYC9fJa": {
        "title": "JUMP"
    },
    "-KXu3yRZgFlDcS8BZ7e1": {
        "title": "JUMP1"
    }
}