2011-08-25 60 views
0

我需要大量的幫助來處理JSON響應我將通過一個Web服務API。它是前向地理編碼。JSON API iphone

如何獲得返回給我的結果數? 也得到結果的價值,比如'地址'。

響應JSON數據如下。非常感謝。

[ 
{"total":63},{ 
    "t":"1", 
    "lable":"Gek Poh Shopping Centre", 
    "address":"762 Jurong West Street 75. (S)640762", 
    "street":"Jurong West Street 75", 
    "zip":"640762", 
    "long":"103.6980151847", 
    "lat":"1.348986165348", 
    "x":"355149.0357","y": 
    "149142.5301", 
    "is_prem":"0", 
    "pid":"47120", 
    "aid":"115810", 
    "lid":"245690", 
    "has_biz":"1", 
    "is_main_building":"1", 
    "id":"245690", 
    "cat_id":"80" 
    }, 
    { 
    "t":"1", 
    "lable":"Gek Poh Ville Community Club (CC)", 
    "address":"1 Jurong West Street 74. (S)649149", 
    "street":"Jurong West Street 74", 
    "zip":"649149", 
    "long":"103.69890252806", 
    "lat":"1.3489703630875", 
    "x":"355247.7723", 
    "y":"149140.7302", 
    "is_prem":"0", 
    "pid":"2979", 
    "aid":"116734", 
    "lid":"127311", 
    "has_biz":"1", 
    "is_main_building":"1", 
    "id":"127311", 
    "cat_id":"14" 
    } 
] 
+0

總密鑰在你的json中代表什麼。 –

+0

@Inder Kumar Rathore。這是該服務找到的結果。但是,由於有一個參數限制它,因此不是實際返回的結果數量。 –

回答

2

JSON處理起來相當簡單,一旦你掌握了它的內容。有幾種適用於iPhone的JSON軟件包,SBjson是最受歡迎的軟件之一。

JSONvalues,objectsarrays組成。在你的例子中,你有一個包含幾個對象的數組(由[]括號表示)(由{}括號表示)。每個對象又包含幾個名稱/值對。對於大多數iPhone JSON解析器,數組將轉換爲NSArray對象,並且對象將轉換爲NSDictionary對象。單個值(不包括在任何括號內)作爲NSString(用於引用值)或NSNumber(用於不在引號內的數值)。

一旦您得到了JSON解析的結果,您就可以一次「剝離洋蔥」圖層來查找數據。

要找出鍵入您在任何層中使用isKindOfClass:

if ([anObject isKindOfClass:[NSDictionary class]]) ... 
+0

感謝您的輸入。現在我明白了。 「總數」與「t」和「標籤」相比有什麼不同?他們都是對象,不是嗎?爲什麼它們被不同的{}括號括起來? –

+0

請注意,您示例中的每個{}對象位於[]括號內,並以逗號分隔。 {}對象是包含[]數組中所有不同的元素。單個對象的意思是設計協議的人 - 可能在這種情況下,數組中的第一個元素總是一個包含某種總數的特殊對象。您需要參考特定協議的文檔。 –

3

還有的SBJson只要下載並複製所有文件SBJson組到您的項目,包括「SBJson.h」

如果你的JSON數據是一個的NSString(dataString),你可以這樣做:

SBJsonParser *parser = [[SBJsonParser alloc] init]; 
NSArray *dataArray = [parser objectWithString:dataString]; 
for (NSDictionary *childDic in dataArray) { 
    NSString *str = [childDic objectForKey:@"address"]; // Here you will get the address 
} 

只是一個樣本,希望它可以幫助

+0

當然,這個例子在他的情況下不起作用,其中外部實體是一個數組。 –

+0

@Daniel R Hicks謝謝,已經修好了。 – ultragtx