0
我从Web服务接收json到NSMutableData中。iphone objective-c:json反序列化的NSData转换字符串
使用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 *jsonData = [strData dataUsingEncoding:NSUTF8StringEncoding];
也
NSData *jsonData = [strData dataUsingEncoding:[NSString defaultCStringEncoding]];
,但我得到上述转换为NSData的
[__NSCFDictionary dataUsingEncoding:]: unrecognized selector sent to instance 0x532bb70
我已经尝试了一些其他编码可用,Xcode中仍然抛出。
如何找出正在使用的编码?
这是我第一次尝试在objective-c中取消实现json。
我在这里错过/做错了什么?
感谢
我会给一个尝试。我后来要将NSData转换为另一个字典,并提取“汽车”关键字的值,然后使用touchjson将其反序列化。这是否是错误的方式? – 2011-06-08 16:03:38
是的,json反序列化器处理对象和子对象,所以它们已经被正确解码。所有对象和子对象都应该是字典,数组或键/值对。 – NWCoder 2011-06-08 16:04:59
这工作!!!。谢谢。首先,我想我不得不喂它特定的部分来反序列化。其次是什么让我感到震惊的是,以下工作:NSString * strData = [字典objectForKey:@“cars”]; NSLog(@“cars:%@”,strData);这给我一个印象,我收到一个字符串的密钥。 – 2011-06-08 16:10:07