解析来自JSON的响应,ios?

问题描述:

我在我的json中有下面的参数。解析来自JSON的响应,ios?

{ 
"msg": "success", 
"data": [ 
    { 
     "FNAME": "test", 
     "LNAME": null, 
     "STATUS": null, 
     "MOBILE1": "1234567890", 
     "show_email": "1", 
     "Info": [ 
      { 
       "id": "73307", 
       "NAME": "demo", 
       "CONTACT": "", 
       "WORKING_HOUR1": "[\"09:00 AM\",\"09:15 AM\",\"09:30 AM\",\"09:45 AM\",\"10:00 AM\"]", 
       "WORKING_HOUR7": "", 
       "DAY": "[\"Monday\",\"Wednesday\"]" 
      } 
     ] 
    } 
] 
} 

我无法理解如何从中获取值。

如果我分析这个我得到错误

 NSError *myError = nil; 
    NSDictionary *res = [NSJSONSerialization JSONObjectWithData:self.responseData options:NSJSONReadingMutableLeaves error:&myError]; 
     NSArray *results = [res objectForKey:@"data"]; 
     NSArray *Info=[results[0] objectForKey:@"Info"]; 
     NSArray *day=clinicInfo[1][@"DAY"]; 



     NSLog(@"%@", day[0]); 

错误:

 'NSInvalidArgumentException', reason: '-[__NSCFString objectAtIndexedSubscript: 
+1

这是无效的JSON – 2014-09-27 13:45:55

+0

你的代码中没有变量叫做“clinicDay [0]”。你的意思是Day [0]? – 2014-09-27 13:46:38

+0

是[0]只有对不起 – WISHY 2014-09-27 13:48:04

编辑:

从您的JSON你想:

NSArray *days = json[@"data"][0][@"Info"][0][@"DAY"] 

而且当你的JSON是有效的,天d工作时间不在数组中 - 它们是一个字符串。

你需要这样的事情。

{ 
    "msg": "success", 
    "data": [ 
     { 
      "FNAME": "test", 
      "LNAME": null, 
      "STATUS": null, 
      "MOBILE1": "1234567890", 
      "show_email": "1", 
      "Info": [ 
       { 
        "id": "73307", 
        "NAME": "demo", 
        "CONTACT": "", 
        "WORKING_HOUR1": [ 
         "09:00 AM", 
         "09:15 AM", 
         "09:30 AM", 
         "09:45 AM", 
         "10:00 AM" 
        ], 
        "WORKING_HOUR7": "", 
        "DAY": [ 
         "Monday", 
         "Wednesday" 
        ] 
       } 
      ] 
     } 
    ] 
} 

首先你没有使用有效的JSON。

{ 
    "DAY": [ 
     "Monday", 
     "Wednesday" 
    ] 
} 

您可以使用NSJSONSerialization解析JSON文件,从中你应该得到一个NSDictionary

在该字典中,键“DAY”应该有NSArray,其中包含两个字符串“Tuesday”和“Thursday”的两个对象。

例如。数据是你的JSON文件

NSError *jsonError = nil; 
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; 
if(!jsonError) NSArray *days = json[@"DAY"]; 
else NSLog(@"Error serialising JSON"); 
+0

是的,有一些错误。那么接下来呢。我有json。我正在尝试的方法是不正确的? – WISHY 2014-09-27 13:51:51

+1

尝试运行此操作,看看是否出现错误。你可以发布整个JSON文件 - 如果这是嵌套在其他东西,那当然不会工作! – 2014-09-27 13:55:12

+0

是的,它实际上是嵌套的 – WISHY 2014-09-27 13:57:48