JSON语法,这是什么?

时间:2010-06-16 08:56:10

标签: json

我理解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报告它是有效的,正如我所期望的那样......;)

4 个答案:

答案 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对象。