2010-11-22 67 views
0

我得到以下出错转换JSON响应转换成在NSDictionary的JSON解析...错误JSON解析,同时将响应为NSDictionary的

ERROR:-JSONValue失败。错误跟踪:( 错误域= org.brautaset.JSON.ErrorDomain代码= 3的UserInfo = 0x4d38270 “无法识别的主角” )

任何建议...

+1

我们需要查看您正在尝试解码的数据 – grahamparks 2010-11-22 13:05:55

+1

如果您是创建应用程序然后解析的JSON对象的人,那么请验证您是否正确创建了JSON对象。同样,格雷厄姆说,粘贴数据 – Bourne 2010-11-22 13:07:38

+0

+100000发布数据。 – JeremyP 2010-11-22 15:13:42

回答

0

其实我不是通过创建JSON对象使用api检索它..

现在我找到了该错误的原因。我没有给有效的json对象转换成nsdictionary ...因此,为了获得有效的json对象,我们必须生成有效的url来检索json对象。

感谢您的建议...

1

你最有可能有相同的问题,因为我...返回的数据是JSONP格式,而不是纯粹的JSON。换句话说,你会的东西要处理类似

functionCall({"Name": "Foo", "Id" : 1234, "Rank": 7}); 

,而不是仅仅

{"Name": "Foo", "Id" : 1234, "Rank": 7} 

更多信息here

你需要分析它之前剥离字符串中的功能和括号通过JSON框架。你可以做到这一点与下面的正则表达式(隔开,使其更容易看到):

\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是从URL响应请求...必须将其存储为NSMutableString以便正则表达式更新它。