【问题标题】:How to convert an NSString of JSON objects to an NSArray?如何将 JSON 对象的 NSString 转换为 NSArray?
【发布时间】:2016-01-30 20:04:50
【问题描述】:

我在将 JSON 对象的 NSString 转换为 NSArray 时遇到问题。

NSArray 对象似乎为空。

这是我的 NSString JSON 代码:

NSString* retrievedStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

这给了我一个打印输出:

{"image_link":"schedule_tien_nguyen.jpg","start_time":"18:00","end_time":"19:00","viet_performer":"","english_performer":"Tien Nguyen","viet_event":"","english_event":"Singing","day":0,"stage":0}

....

我尝试使用以下方法将 NSString 转换为 NSArray

NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:
                     [retrievedStr dataUsingEncoding:NSUTF8StringEncoding]
                      options:0 error:&error];

但是 jsonObject 的打印输出是 (null)

我已经尝试过这里的解决方案: Converting an NSString of JSON Data to NSArrayHow to convert a JSON String into an NSArray? 但它仍然打印出 null。

error 打印输出状态:

“最后的垃圾。”

我不确定这是什么意思?

【问题讨论】:

  • 这个 JSON 包含字典而不是数组,所以尝试使用 NSDictionary
  • 你检查error了吗?
  • Avi:我在描述中添加了它
  • 检查原始响应。似乎在json之后添加了错误或其他字符。请检查这个
  • NSLog error 如果返回 null,它提供帮助您。 if (jsonObject == 0) {NSLog(@"JSONObjectWithData error: %@", error);} 并处理错误。

标签: objective-c nsstring nsarray nsjsonserialization


【解决方案1】:

尝试以下方法来读取您的 JSON 响应。正如其他人所提到的,它是 JSON 字典,而不是 NSArray。字典可能包含数组,但对象响应本身就是字典。

NSString* retrievedStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSString *imageLink = (NSString *)[retrievedStr objectForKey:@"image_link"]
NSLog(@"%@", imageLink);

【讨论】:

    【解决方案2】:

    使用NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多