0

我将来自 web 服务的 json 接收到 NSMutableData 中。

使用 TouchJson 将其转换为 NSDictionary。

    NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:responseData error:&error];
NSString *strData = [dictionary objectForKey:@"cars"];

然后我从该字典的键中检索一个字符串。

字符串如下所示

     {
        b = "http://schemas.datacontract.org/";
        car =     (
                    {
                "car_name" = "Honda Civic";
                year = 2011;
                "dealer" = "local honda dealer";
                "bought on" = {
                    nil = 1;
                };
                "license_number" = 1234567;
                status = ReadyToGo;
            }
)};

本质上,“汽车”键可以有“n”条记录。

当我尝试将上述内容转换为 NSData 使用

NSData *jsonData = [strData dataUsingEncoding:NSUTF8StringEncoding];

并且

NSData *jsonData = [strData dataUsingEncoding:[NSString defaultCStringEncoding]];

但我明白了

[__NSCFDictionary dataUsingEncoding:]: unrecognized selector sent to instance 0x532bb70

我已经尝试了一些其他可用的编码,但 xcode 仍然抛出。

如何确定正在使用的编码?

这是我第一次尝试在objective-c 中去实现json。

我在这里错过了什么/做错了什么?

谢谢

4

1 回答 1

1

我认为它根本不是一个字符串......

改成这个并测试....

NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:responseData error:&error];
NSDictionary *carsDictionary = [dictionary objectForKey:@"cars"];
NSArray *arrayOfCarDictionaries = [carsDictionary objectForKey:@"car"];
于 2011-06-08T16:00:17.353 回答