在我的JSON5应用程序中,我有一个包含iOS字符串的NSString
。我想将JSON字符串表示反序列化为本机NSDictionary
对象。
"{\"password\" : \"1234\", \"user\" : \"andreas\"}"
我尝试了以下方法:
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:@"{\"2\":\"3\"}"
options:NSJSONReadingMutableContainers
error:&e];
但它会抛出运行时错误。我做错了什么?
-[__NSCFConstantString bytes]: unrecognized selector sent to instance 0x1372c
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[__NSCFConstantString bytes]: unrecognized selector sent to instance 0x1372c'
发布于 2011-12-23 00:28:30
看起来您传递的是NSString
参数,而您应该传递的是NSData
参数:
NSError *jsonError;
NSData *objectData = [@"{\"2\":\"3\"}" dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData
options:NSJSONReadingMutableContainers
error:&jsonError];
发布于 2012-11-16 14:19:06
NSData *data = [strChangetoJSON dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&error];
例如,您在NSString
strChangetoJSON中有一个带有特殊字符的NSString
。然后,您可以使用上面的代码将该字符串转换为JSON响应。
发布于 2015-03-20 16:50:00
我已经从@Abizern answer创建了一个类别
@implementation NSString (Extensions)
- (NSDictionary *) json_StringToDictionary {
NSError *error;
NSData *objectData = [self dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:&error];
return (!json ? nil : json);
}
@end
像这样使用它,
NSString *jsonString = @"{\"2\":\"3\"}";
NSLog(@"%@",[jsonString json_StringToDictionary]);
https://stackoverflow.com/questions/8606444
复制相似问题