當調用findItemsAdvanced與RESPONSE-DATA-FORMAT=XML
,與預期一致的結果,例如:爲什麼findItemsAdvanced(eBay尋找API)JSON結果元素所有數組?
<findItemsAdvancedResponse xmlns="http://www.ebay.com/marketplace/search/v1/services">
<ack>Success</ack>
<version>1.13.0</version>
<timestamp>2014-11-16T20:59:57.588Z</timestamp>
<searchResult count="0"/>
<paginationOutput>
<pageNumber>0</pageNumber>
<entriesPerPage>100</entriesPerPage>
<totalPages>0</totalPages>
<totalEntries>0</totalEntries>
</paginationOutput>
<itemSearchURL>http://www.ebay.co.uk/sch/i.html?_nkw=mytest1</itemSearchURL>
</findItemsAdvancedResponse>
但調用與RESPONSE-DATA-FORMAT=JSON
一樣,各個元素都被包裹在[]
:
{"findItemsAdvancedResponse":[
{"ack":["Success"],
"version":["1.13.0"],
"timestamp":["2014-11-16T20:58:14.639Z"],
"searchResult":[
{"@count":"0"}],
"paginationOutput":[
{"pageNumber":["0"],
"entriesPerPage":["100"],
"totalPages":["0"],
"totalEntries":["0"]}],
"itemSearchURL":["http:\/\/www.ebay.co.uk\/sch\/i.html?&_nkw=mytest1"]
}]
}
這似乎使它使用Javascript提取結果的痛苦例如:
response.findItemsAdvancedResponse[0].paginationOutput[0].pageNumber[0]
我在這裏錯過了什麼或做錯了什麼? (如果不會考慮請求XML中的結果並使用XML => JSON轉換工具...)
JSON中的方括號表示數組,但大多數元素不是數組(如XML所示)。我預計JSON沒有方括號。 –
陣列與否不會改變響應以JSON形式提供的事實,因爲您要求使用eBay API。擁有「[]」(數組)意味着「一個或多個元素」。在XML中,沒有「一個或多個元素」的指示,因爲所有的XML節點都是數組,因爲它們可以有子節點。然而,我會同意你的看法,eBay的JSON響應中的一些數組不應該是數組 - 「你定義了多少次每頁條目數?答案:1」,除非當然不同類型的頁面可以每頁有不同數量的條目,但這是另一個設計問題。 – LiveLongAndProsper
是的,同意它是有效的JSON,但這並不正確。以前的API(「購物API」)FindItemsAdvanced調用沒有以這種奇怪的方式返回結果。將採取轉換XML到JSON描述[這裏](http://stackoverflow.com/questions/8830599/php-convert-xml-to-json#19391553) - 這給出了我想要他們沒有爲每個元素添加[0]。 –