2014-10-04 43 views
0

我對Objective-c有點新。我試圖解析JSON數據,看起來像這是在一個單一的數組。下面將Json NSDictionary項目轉換爲字符串 - Objective C

[{"id":"3672","name":"TestName","color":"red","cost":456","date":"0000-00-00 00:00:00"}] 

是代碼的目標C部分

FullUrl=[NSString stringWithFormat:@"http://mywebsite.com?user=%@",uservalue]; 
NSString *absoluteURl=[NSString string]; 
absoluteURl=[self URLEncodeString:FullUrl]; 

NSURL *url=[[NSURL alloc]initWithString:absoluteURl]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

NSData *data = [NSURLConnection sendSynchronousRequest:request 
             returningResponse:nil error:nil]; 

NSData *jsonData = [data dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *parseJson = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil] 

現在我想知道我怎麼可以採取每個鍵值爲從parseJson一個字符串?比如我想的名字值到「字符串名稱」等,

,當我把在線路的NSDictionary斷點* parseJson =,並採取了光標它parseJson節目,如

<__NSCFArray 0x1dddb670>(
{ 
    name = "TestName"; 
    id = 3672; 
    color = red; 
    cost = "456"; 
    date = "0000-00-00 00:00:00"; 
} 
) 

因此,這意味着,JSON解析是在我的代碼中工作正常嗎?與json webservice Items訂單相比,爲什麼訂單不正確?

回答

3

您的JSON對象是一個字典數組。字典是無序的集合名稱/值對,因此他們未必會留在他們在初始化相同的順序


所以假設你的反應是這樣的:

data:[{"id":"3672","name":"TestName","color":"red","cost":456","date":"0000-00-00 00:00:00"}] 

嘗試它像這樣的:

NSArray* dataArr = [parseJson objectForKey:@"data"]; 

for(NSDictionary *obj in dataArr){ 

NSString* Stringname = [obj objectForKey:@"name"]; 
NSString* Stringid = [obj objectForKey:@"id"]; 
NSString* Stringcolor = [obj objectForKey:@"color"]; 
NSString* Stringcost = [obj objectForKey:@"cost"]; 
NSString* Stringdate = [obj objectForKey:@"date"]; 
} 
+0

謝謝,我明白了。 – 2014-10-04 18:14:32

1

JSON對象是無序的一組名稱/值對,因此它不會保持與初始化相同的順序。

使用

NSString* Stringname = [parseJson objectForKey:@"name"]; 

訪問元素字典

+0

我沒有編輯它:P我在評論中說這不會工作,因爲parseJson是一個數組 – 2014-10-04 12:01:43

+0

是的正確,objectForKey是特定於NSDictionary和Xcode顯示警告,它不是NSArray。 – 2014-10-04 18:16:48

1

的順序,因爲你項目的NSDictionary這是一個無序的集合映射是不一樣的。

是的,json解析返回正確的結果。

1

是它的做工精細,JSON
元素可以有秩序,
但是NSDictionary元素沒有排序。

所以當JSON字符串轉換爲NSDictionary時,
順序被洗牌。

相關問題