有人告诉我。
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标准, 请告诉我参考的地方?
答案 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"
}
}