我理解JSON的概念,但是在开始使用ebay的api之后,我遇到了一个我以前从未见过的符号,并且想知道是否有人可以解释它发生了什么?
{
"findItemsByKeywordsResponse": [
{
"ack": [
"Success"
],
"version": [
"1.5.0"
],
"timestamp": [
"2010-06-16T08:42:21.468Z"
],
"searchResult": [
{
"@count": "0"
}
],
"paginationOutput": [
{
"pageNumber": [
"0"
],
"entriesPerPage": [
"10"
],
"totalPages": [
"0"
],
"totalEntries": [
"0"
]
}
]
}
]
}
什么是“ @count ”的事情?我注意到当我在chrome中引用它时,它会抛出一个错误:
chrome error http://www.oth4.com/clip.jpg
但在Firefox中没有。 JSON Lint报告它是有效的,正如我所期望的那样......;)
答案 0 :(得分:6)
这是一个以@
字符开头的属性名称。就是这样。
使用square bracket notation访问包含无法用点符号表示的字符的属性。
即。
currentPrice[0]['@currencyId']
答案 1 :(得分:3)
除了这里的答案之外,当从XML创建JSON时,@
通常出现在JSON属性名称中。 @
表示XML属性,因此可以在其新的JSON表单中将其与该XML节点的子元素区分开来。例如,XML中的特定项可能如下所示:
<searchResult count="0">
</searchResult>
如上所述,您可以使用方括号表示法访问该属性。
答案 2 :(得分:2)
尝试:
var currency = item.sellingStatus[0].currentPrice[0]["@currencyId"];
不要求Javascript数组键是有效的Javascript标识符。
答案 3 :(得分:0)
在PHP中,如果要访问名称以无效字符开头的属性,则必须使用{'property_name'}
。因此,如果您想从特定的JSON示例中访问@count
,请尝试以下操作:
$json_decoded = json_decode($json_var);
$count = $json_decoded->findItemsByKeywordsResponse[0]->searchResult[0]->{'@count'};
json_decode()
函数用于将JSON转换为PHP对象。