将JSON中的数组作为二维数组的数组或字符串返回

时间:2019-07-01 16:45:16

标签: php objective-c json

使用一个API(我正在编写),我需要从运行PHP的服务器上使用JSON返回一个相当简单的数组,以供在Objective-C中使用。

在电话上,代码将添加到以下形式的数组中:

NSArray *carPics =@[@[@"ford",@"ford.png"],@[@"bmw",@"bmw.png"];

我可以通过转义所有特殊字符来将上面的内容作为字符串返回JSON-有点乏味但可能的是,或者将特殊字符替换为魔术字符串(例如***)。然后使用:

将字符串作为数组
NSArray *arr = [str componentsSeparatedByString:@"***"];

另一方面,我可以用PHP创建一个数组并将该数组返回给手机,然后将其转换为Objective-C。

$carpics = array(
  array(
    "ford" => "ford.png",
    "bmw" => "bmw.png",
  );

它的缺点是它将涉及更多的转化。

是更好的方法,还是它们中的六种?

修改

当前服务器发送的JSON如下:

{"carpics":{"ford":"ford.png","bmw":"bmw.png"}}

我正在尝试使用以下方法在手机上对其进行解码:

NSDictionary* json = [NSJSONSerialization JSONObjectWithData:jsonFeed
                                                         options:kNilOptions
                                                           error:&error];


        NSMutableArray *carPics = [[json objectForKey:@"carpics"]mutableCopy];
NSArray *myArray = carPics;

这很好。我已经证实json是字典。不幸的是,我还使用kindOfClass验证了carpics或myArray不是我想要的数组,而是一个字典。

如果我尝试使用以下方法获取myArray的第一个元素:

 NSArray *object = myArray[i];

我得到一个错误:

[__NSDictionaryM objectAtIndexedSubscript:]: unrecognized selector sent to instance 0x174449420'

我真的想要一个数组,因为我希望一次一次遍历数组的每个元素。

要使JSON成为适当的数组,我需要做什么。我可以更改来自服务器的JSON,也可以在电话上以不同的方式处理JSON。

以下是创建JSON的PHP代码:

header("Content-Type: application/json");
$ret = array("ford"=>"ford.png","bmw"=>"bmw.png");
echo json_encode(array('carpics'=>$ret));

0 个答案:

没有答案