代码之家  ›  专栏  ›  技术社区  ›  danp

JSON语法,这是什么?

  •  2
  • danp  · 技术社区  · 14 年前

    我理解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" 
                    ] 
                } 
            ] 
        } 
    ]
    

    }

    有什么问题 @计数 “什么?我注意到当我在chrome中引用它时,它抛出了一个错误:

    chrome error http://www.oth4.com/clip.jpg

    4 回复  |  直到 14 年前
        1
  •  6
  •   Quentin    14 年前

    @ 性格。仅此而已。

    square bracket notation 访问包含不能在点表示法中使用的字符的属性。

    currentPrice[0]['@currencyId']
    
        2
  •  3
  •   Andy E    14 年前

    除了这里的答案, @ 从XML创建JSON时,通常出现在JSON属性名称中。这个 @ 表示一个XML属性,以便可以将其与新JSON形式的XML节点的子元素区分开来。例如,XML中的特定项可能如下所示:

        <searchResult count="0">
        </searchResult>
    

    如前所述,可以使用方括号表示法访问属性。

        3
  •  2
  •   Greg Hewgill    14 年前

    尝试:

    var currency = item.sellingStatus[0].currentPrice[0]["@currencyId"];
    

        4
  •  0
  •   Mihai V    11 年前

    在PHP中,如果要访问名称以无效字符开头的属性,则必须使用 {'property_name'} . 所以如果你想进入 @count 在具体的JSON示例中,您应该尝试以下方法:

    $json_decoded = json_decode($json_var);
    $count = $json_decoded->findItemsByKeywordsResponse[0]->searchResult[0]->{'@count'};
    

    json_decode()