2010-06-16 3 views
2

나는 JSON의 개념을 잘 알고 있지만, 이베이의 API를 사용하기 시작한 후에, 전에 보지 못했던 표기법을 발견했고, 누군가가 그 일들을 설명 할 수 있는지 궁금해하고 있었다.JSON 구문,이게 뭐죠?

{ 
"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 error http://www.oth4.com/clip.jpg

그러나 Firefox에서하지 : 나는 크롬에서 그것을 참조 할 때, 그것이 오류가 발생났습니다. 예상대로 JSON Lint가 유효하다고보고합니다.;)

+1

이 JSON이 XML로 생성 되었습니까? 왜냐하면 E4X는'@ attribute_name' 구문을 사용하는 속성을 나타 내기 때문입니다. – Amarghosh

+0

아마도 그렇게 생각합니다. – dmp

답변

6

이것은 @ 문자로 시작하는 속성 이름입니다. 그게 전부입니다.

도트 표기법으로 사용할 수없는 문자가 포함 된 속성에 액세스하려면 square bracket notation을 사용하십시오.

currentPrice[0]['@currencyId'] 
+0

감사합니다. 이것은 완벽하게 작동했습니다. 그럼이 "@"표기법에 대해 특별한 것은 없습니다. – dmp

+0

JSON과 관련된 최소한의 부분은 전혀 없습니다. – Quentin

2

시도 :

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

자바 스크립트 배열 키가 유효한 자바 스크립트 식별자 수없는 요구 사항은 없습니다.

+0

감사합니다. 너무 효과적 이었지만 위의 링크를 유용하게 사용할 수 있습니다. – dmp

3

여기에 대한 답변 외에도 @은 일반적으로 XML로 JSON을 만들 때 JSON 속성 이름에 나타납니다. @은 새 JSON 형식의 XML 노드의 자식 요소와 구별 할 수 있도록 XML 특성을 나타냅니다. 예를 들어 XML의 해당 항목은 다음과 같습니다.

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

앞에서 설명한대로 대괄호 표기법을 사용하여 속성에 액세스 할 수 있습니다.

+0

감사합니다. – dmp

0

PHP에서 이름이 잘못된 문자로 시작하는 속성에 액세스하려면 {'property_name'}을 사용해야합니다. 당신이 특정 JSON 예제에서 @count에 액세스하려면 그래서 당신이 시도해야합니다

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

json_decode() 함수는 PHP 오브젝트로 JSON 변환하는 데 사용되었다.