亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用NSJSONSerialization

如何使用NSJSONSerialization

子衿沉夜 2019-06-29 18:01:12
如何使用NSJSONSerialization我有一個JSON字符串(來自PHP的json_encode()看起來是這樣的:[{"id": "1", "name":"Aaa"}, {"id": "2", "name":"Bbb"}]我想把它解析成iPhone應用程序的某種數據結構。我想對我來說最好的是有一個字典數組,所以數組中的第0元素是一個帶鍵的字典。"id" => "1"和"name" => "Aaa".我不明白為什么NSJSONSerialization但是存儲數據。到目前為止,這是我的代碼:NSError *e = nil;NSDictionary *JSON = [NSJSONSerialization      JSONObjectWithData: data      options: NSJSONReadingMutableContainers      error: &e];這只是我在另一個網站上看到的一個例子。我一直在試著讀一讀JSON對象,方法是打印出元素的數量和類似的內容,但我總是得到EXC_BAD_ACCESS.我該如何使用NSJSONSerialization來解析上面的JSON,并將其轉換為我提到的數據結構?
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

根json對象不是字典,而是數組:

[{"id": "1", "name":"Aaa"}, {"id": "2", "name":"Bbb"}]

這可能會讓您清楚地了解如何處理它:

NSError *e = nil;NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e];if (!jsonArray) {
  NSLog(@"Error parsing JSON: %@", e);} else {
   for(NSDictionary *item in jsonArray) {
      NSLog(@"Item: %@", item);
   }}


查看完整回答
反對 回復 2019-06-29
?
森林海

TA貢獻2011條經驗 獲得超2個贊

這是我的代碼,用于檢查接收到的json是否為數組或字典:

NSError *jsonError = nil;id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&jsonError];if ([jsonObject isKindOfClass:[NSArray class]]) {
    NSLog(@"its an array!");
    NSArray *jsonArray = (NSArray *)jsonObject;
    NSLog(@"jsonArray - %@",jsonArray);}else {
    NSLog(@"its probably a dictionary");
    NSDictionary *jsonDictionary = (NSDictionary *)jsonObject;
    NSLog(@"jsonDictionary - %@",jsonDictionary);}

我嘗試過這些選項:kNilOptions和NSJSONReadingMutableContainers,并為兩者正確工作。

顯然,實際的代碼不能以這種方式在if-ell塊中創建NSArray或NSDicary指針。


查看完整回答
反對 回復 2019-06-29
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

對我有用。你的data對象可能是nil而且,正如rckoenes所指出的,根對象應該是一個(可變的)數組。請參閱以下代碼:

NSString *jsonString = @"[{\"id\": \"1\", \"name\":\"Aaa\"}, {\"id\": \"2\", \"name\":\"Bbb\"}]";NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];NSError *e = nil;NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];NSLog(@"%@", json);

(我不得不用反斜杠轉義JSON字符串中的引號。)


查看完整回答
反對 回復 2019-06-29
  • 3 回答
  • 0 關注
  • 937 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號