2014-01-18 75 views
1

如何将此NSString转换为NSDictionary?下面是的NSString:需要一些帮助将JSON字符串转换为NSDictionary

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]; 

然而,当我NSLogdic为null,印刷该错误给出如下:

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\"}}" 

成功地将其转换。

我猜猜报价有问题吗?

+2

的'NSLog'应该输出=>'urlstring:{ “URL”:“HTTP:/ /mydomain.com/metaioman_target.png“}',所以你的问题是外双引号,摆脱他们,它会反序列化就好。 – Alladinian

+0

@Alladinian是对的。删除外部双引号后尝试转​​换。 – NightFury

回答

0

如果字符串是有效的(在JSON的术语)NSLog应该输出:

urlstring: {"url":"http://mydomain.com/metaioman_target.png"}

所以你的问题是外双引号,摆脱他们,它会反序列化就好了。

+0

是的。这是问题所在。谢谢。 – resting

0

在实际的JSON字符串周围有双引号。 你需要检查这些引号何时添加并摆脱它们。

urlString应该是{"url":"http://mydomain.com/metaioman_target.png"},而不是"{"url":"http://mydomain.com/metaioman_target.png"}"

或者你反序列化,然后才能将其删除:

[urlString substringWithRange:NSMakeRange(1, [urlString length]-2)] 
相关问题