Синтаксис JSON, что это? - PullRequest
       2

Синтаксис JSON, что это?

2 голосов
/ 16 июня 2010

Я хорошо понимаю концепции JSON, но после того, как начал использовать API eBay, я наткнулся на нотацию, которую раньше не видел, и подумал, может ли кто-нибудь объяснить, что с ним происходит?

{
"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, он выдает ошибку:

ошибка хрома http://www.oth4.com/clip.jpg

Но в Firefox нет. JSON Lint сообщает, что он действителен, как я и ожидал ...;)

Ответы [ 4 ]

6 голосов
/ 16 июня 2010

Это имя свойства, которое начинается с символа @.Это все.

Используйте обозначение в квадратных скобках для доступа к свойствам, содержащим символы, которые нельзя использовать в точечной записи.

т.е.

currentPrice[0]['@currencyId']
3 голосов
/ 16 июня 2010

В дополнение к ответам здесь, @ обычно появляется в именах свойств JSON, когда JSON создается из XML.@ представляет атрибут XML, чтобы его можно было отличить от дочерних элементов этого узла XML в его новой форме JSON.Например, этот конкретный элемент в XML может выглядеть следующим образом:

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

Как уже предлагалось, вы можете получить доступ к свойству, используя обозначение в квадратных скобках.

2 голосов
/ 16 июня 2010

Попробуйте:

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

Нет требования, чтобы ключи массива Javascript были действительными идентификаторами Javascript.

0 голосов
/ 13 мая 2013

В PHP, если вы хотите получить доступ к свойству, имя которого начинается с недопустимого символа, вы должны использовать {'property_name'}. Поэтому, если вы хотите получить доступ к @count из вашего конкретного примера JSON, попробуйте следующее:

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

json_decode() функция была использована для преобразования JSON в объект PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...