【问题标题】:How to convert a JSON array into an NSArray如何将 JSON 数组转换为 NSArray
【发布时间】:2012-02-24 15:40:31
【问题描述】:

我一直无法找出如何将 JSON 数组转换为 NSArray。

我有一个 php 脚本,它创建一个数组,该数组转换为 JSON,然后发送并存储到一个 NSString 中,如下所示:

[1,2,3,4]

我的问题是我需要把它变成一个整数的 NSArray。如何做到这一点?

谢谢!

【问题讨论】:

  • 你的应用是处理 JSON 还是字符串?
  • 没有整数的 NSArray 这样的东西。 NSArrays、NSDictionarys 和 NSSets 可能只包含 ObjC 样式的对象,所以使用任何 JSON 框架(我更喜欢 JSONKit)将得到一个 NSNumbers 的 NSArray。

标签: objective-c ios json nsstring nsarray


【解决方案1】:

如果我想快速将其分解为一个数组,我会这样做:

NSString * jstring = @"[1,2,3,4]";  //your json string

jstring = [jstring stringByReplacingOccurrencesOfString:@"[" withString:@""];
jstring = [jstring stringByReplacingOccurrencesOfString:@"]" withString:@""];

NSArray * intArray = [string componentsSeparatedByString:@","];



//you could create your int from the array like this
int x = [[intArray objectAtIndex:0]intValue];

【讨论】:

  • 是的......不,他不会有一个 int 数组,他会有一个带有 NSStrings 的数组。
  • 是的,抱歉,您必须将字符串拉为 intValue
  • 谢谢!这很好用。但是我怎么能把字符串拉成 intValues 呢?
【解决方案2】:

您应该查看NSJSONSerialization 类的文档。

您可以将远程调用接收到的NSData 传递给它,它是 JSON 格式的字符串,并接收它包含的数组或字典。

NSObject *o =[NSJSONSerialization JSONObjectWithData:data 
                                             options:NSJSONReadingMutableContainers 
                                               error:&error];

// other useful "options":
// 0 
// NSJSONReadingMutableLeaves
// NSJSONReadingMutableLeaves | NSJSONReadingMutableContainers

然后,您应该检查 o 是否属于您出于理智目的而期望的类型

【讨论】:

  • 随着越来越多的人在他们的设备上安装 iOS5,这应该是人们在 iOS 中使用 JSON 的方式。
【解决方案3】:

在您的项目中导入 SBJson(拖放)

#import "SBJson.h"

然后您从 php 文件接收 JSON 响应的位置

NSArray *array = [responseString JSONValue];

【讨论】:

  • 这适用于解码 php 中的 JSON,但是当我将它发送到 NSString 时,所有出现的都是 Array 另外,我想我必须在 iOS 应用程序中编辑我的 .m 文件,而不是php.
  • 啊哈。我的错。 Objective-c 中有一个很棒的 json 库:github.com/stig/json-framework
猜你喜欢
  • 1970-01-01
  • 2017-11-29
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 2019-06-18
  • 1970-01-01
  • 2012-08-31
相关资源
最近更新 更多