如何将此NSString转换为NSDictionary?以下是NSString:
NSLog(@"urlstring: %@", urlString);
输出:urlstring: "{"url":"http://mydomain.com/metaioman_target.png"}"
然后我将其转换为JSON,然后转换为NSDictionary:
NSData *json = [urlString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:json options:0 error:&e];
但是,当NSLog
dic
为空时,打印错误会显示以下内容:
error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)"
(JSON text did not start with array or object and option to allow fragments not set.)
UserInfo=0x16641de0 {NSDebugDescription=JSON text did not start with
array or object and option to allow fragments not set.}
但是,使用以下内容覆盖urlString
@"{\"ID\":\"Content\":268,\"type\":\"text\"},\"ContractTemplateID\":\"Content\":65,\"type\":\"text\"}}"
成功转换它。
我猜引号有问题吗?
答案 0 :(得分:0)
如果您的字符串有效(就JSON而言){}输出NSLog
:
urlstring: {"url":"http://mydomain.com/metaioman_target.png"}
所以你的问题是外部的双引号,摆脱它们,它会反序列化。
答案 1 :(得分:0)
实际的JSON字符串周围有双引号。 您需要检查何时添加这些引号并将其删除。
urlString
应该是{"url":"http://mydomain.com/metaioman_target.png"}
而不是"{"url":"http://mydomain.com/metaioman_target.png"}"
或者您可以在反序列化之前将其删除:
[urlString substringWithRange:NSMakeRange(1, [urlString length]-2)]