AM在json解析中将json响应转换为NSdictionary时出现以下错误...
错误:-JSONValue失败。错误跟踪是:( Error Domain = org.brautaset.JSON.ErrorDomain Code = 3 UserInfo = 0x4d38270“无法识别的前导字符” )
任何建议......
答案 0 :(得分:1)
你很可能和我有同样的问题......返回的数据是JSONP格式而不是纯JSON。换句话说,你将处理像
这样的事情functionCall({"Name": "Foo", "Id" : 1234, "Rank": 7});
而不仅仅是
{"Name": "Foo", "Id" : 1234, "Rank": 7}
更多信息here
在通过JSON Framework解析之前,您需要从字符串中去除函数和括号。您可以使用以下正则表达式(间隔开以便于查看):
\w+ \s? \( ( \{ .* \} ) \}
写这个的脚本是:
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"\\w+\\s?\\((\\{.*\\})\\)"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex replaceMatchesInString:resultString
options:0
range:NSMakeRange(0, [resultString length])
withTemplate:@"$1"];
NSLog(@"resultString = %@", resultString);
NSLog(@"converted = %@", [resultString JSONValue]);
其中resultString
是来自网址请求的响应...必须将其存储为NSMutableString
,以便正则表达式对其进行更新。
答案 1 :(得分:0)
实际上我没有使用api am检索它来创建json对象..
现在我找到了这个错误的原因。我没有给有效的json对象转换成nsdictionary ...所以为了获得有效的json对象,我们必须生成有效的url来检索json对象。
感谢您的建议......