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