我有以下格式的JSON响应。
{
"_meta" : {
"next-person-id" : "1001",
"totalPersons" : "1000"
}
}
我正在使用Angular的$http
服务来检索此内容并尝试在javascript中访问next-person-id
属性,如下所示,
$http.get(url).then(
function(response){
console.log(response._meta.next-person-id);
}
);
但是响应中的next-person-id
始终未定义。但我能够访问totalPersons属性。在javascript中使用' - '字符获取属性有什么问题吗?
答案 0 :(得分:7)
使用括号表示法:
? [= com.bla.bla] file /var/log/my-log
? [= com.bla.bla] claim
可能的替代方法是更改密钥以使用下划线,以便console.log(response._meta['next-person-id']);
起作用。
答案 1 :(得分:1)
你不能使用 - 因为它也是一个减号。
要解决此问题,请使用方括号表示法:
console.log(response._meta['next-person-id']);
答案 2 :(得分:-1)
是的,因为在JavaScript
中,您可以对变量或属性使用Latin letters
,numbers
和$
_
符号。
如果您想使用-
,则应使用字符串引号将其转义。
var obj = {
'next-person-id': 2
}
console.log(obj['next-person-id']); // 2
说明:
Global scope
-
表示minus
。它会尝试从person
中减去name
。所以你会得到这样的错误:
ReferenceError: name is not defined
在JS
中,您可以通过2种方式访问对象属性
1)Dot nation
obj.property
2)方括号国家
obj['property']
这里你需要解析字符串,所以你知道在字符串中你可以有除字符串引号之外的任何符号(它将关闭字符串)