iphone objective-c:用于json反序列化的NSData转换的字符串

时间:2011-06-08 15:57:35

标签: iphone objective-c json nsdata touchjson

我从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'个记录来反对'car'键。

当我尝试使用

将上述内容转换为NSData时
NSData *jsonData = [strData dataUsingEncoding:NSUTF8StringEncoding];

以及

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

但我得到

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

我已尝试过其他一些编码,xcode仍然可以使用。

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

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

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

由于

1 个答案:

答案 0 :(得分:1)

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

更改为此并测试....

NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:responseData error:&error];
NSDictionary *carsDictionary = [dictionary objectForKey:@"cars"];
NSArray *arrayOfCarDictionaries = [carsDictionary objectForKey:@"car"];