如何将JsonString转换为NSArray?

时间:2015-12-30 12:19:19

标签: ios objective-c

我很难将Json String转换为NSArray。这是我的代码

NSError *jsonError;
NSData *objectData = [[response objectForKey:@"result"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData
                                                         options:NSJSONReadingMutableContainers
                                                           error:&jsonError];

NSLog(@"json = %@",json);

NSString *jsonDataString = [json objectForKey:@"data"];
NSLog(@"jsonDataArray = %@",jsonDataString);

NSData* cityData = [jsonDataString dataUsingEncoding:NSUTF8StringEncoding];

NSLog(@"%@",cityData);

NSError *errorMSg;
NSMutableArray *cityArray = [[NSMutableArray alloc] init];
NSMutableArray *testFeeds = [NSJSONSerialization JSONObjectWithData: cityData options:NSJSONReadingMutableContainers error:&errorMSg];
[cityArray addObjectsFromArray:testFeeds];

NSLog(@"%@",cityArray);
NSLog(@"%@",errorMSg);
NSLog(@"%d", [cityArray count]);

这是我的Debuuged Response。我知道这个问题被问了太多时间,但没有一个解决方案适合我。 json响应来自iOS中不可更改的单引号

  

json = {       data =“[{'Amount':'5000','Description':'test','Transact at':'2015年12月22日星期二18:48:14 GMT + 0530(IST)','交易模式':' Cash'},{'Amount':'100','Description':'test','Transact at':'Wed Dec 30 2015 11:15:12 GMT + 0530(IST)','交易模式':'校验'}]”;       status =成功;   }

     

2015-12-30 17:44:56.890 Quickli [5528:172337] jsonDataArray = [{'Amount':'5000','Description':'test','Transact at':'2015年12月22日星期二18 :格林威治标准时间48:14(IST)','交易模式':'现金'},{'金额':'100','描述':'测试','交易':'2015年12月30日星期三11 :15:12 GMT + 0530(IST)','交易模式':'检查'}]

     

二○一五年十二月三十○日17:44:56.891 Quickli [5528:172337] LT; 5b7b2741 6d6f756e 74273a20 27353030 30272c20 27446573 63726970 74696f6e 27203a20 27746573 74272c20 27547261 6e736163 74206174 273a2027 54756520 44656320 32322032 30313520 31383a34 383a3134 20474d54 2b303533 30202849 53542927 2c202754 72616e73 61637469 6f6e206d 6f646527 3a202743 61736827 7d2c7b27 416d6f75 6e74273a 20273130 30272c20 27446573 63726970 74696f6e 27203a20 27746573 74272c20 27547261 6e736163 74206174 273a2027 57656420 44656320 33302032 30313520 31313a31 353a3132 20474d54 2b303533 30202849 53542927 2c202754 72616e73 61637469 6f6e206d 6f646527 3a202743 68657175 65277d5d>

     

2015-12-30 17:48:10.166 Quickli [5528:172337](   )

     

2015-12-30 17:48:10.935 Quickli [5528:172337]错误Domain = NSCocoaErrorDomain Code = 3840“字符2周围的对象中的值没有字符串键。” UserInfo = {NSDebugDescription =字符2周围对象中的值没有字符串键。}

     

2015-12-30 17:48:12.176 Quickli [5528:172337] 0

2 个答案:

答案 0 :(得分:2)

错误消息显示问题:

  

"字符2周围的对象中没有字符串键。" UserInfo = {NSDebugDescription =字符2周围对象中的值没有字符串键。}

这意味着JSON格式错误 您必须用双引号替换单引号。

NSData* cityData = […行之前插入一行。

jsonDataString = [jsonDataString stringByReplacingOccurrencesOfString:@"\'" withString:@"\""];

答案 1 :(得分:1)

如果你有一个名为jsonDataString的NSString,那么你可以这样做......

NSString *jsonDataString = [json objectForKey:@"data"];
NSData *jsonData = [jsonDataString dataUsingEncoding:NSUTF8StringEncoding];
NSMutableArray * testFeeds =[NSMutableArray alloc]init];
NSArray *abc= [NSJSONSerialization JSONObjectWithData:jsonData options: NSJSONReadingMutableContainers error:nil];
[testFeeds addObject:abc];
NSLog(@"%@", testFeeds);