2014-02-21 298 views
0

我使用PHP服务在我的应用我收到来自服务器的响应我试图解析响应字符串,但JSON解析器返回NULL值的响应字符串。我无法解析这个响应字符串。我有这个问题的镜头,但没有人给出确切的解决方案。我正在使用SBJson解析器和NSJSONSeralization,但它返回空值。我在下面张贴我的回复字符串,请帮我任何一个。 响应字符串无法解析使用JSON解析器

([["{\"category_id\":\"1\", \"category_name\":\"BEVERAGES\", \"image_id\":\"6\"}"]]) 
+0

您的PHP服务使用'json_encode'函数? – alessio271288

+0

如何从此字符串中精确转换格式 – Murali

+0

您确定响应字符串与您打印的完全相同吗? – CouchDeveloper

回答

1

确保您解析您的JSON如下代码:

NSString * jsonString = @"{\"category_id\":\"1\", \"category_name\":\"BEVERAGES\", \"image_id\":\"6\"}"; 
NSData * jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
id jsonContainer = [NSJSONSerialization JSONObjectWithData:jsonData 
                options:NSJSONReadingMutableContainers 
                error:nil]; 
+0

串谢谢您的回复 – Murali

+0

它的工作单字典,但它的工作为多字典。实际上我的回应是这样来的。 “{\”category_id \“:\”1 \“,\”category_name \“:\”BEVERAGES \“,\”image_id \“:\”6 \“}”, “{\”category_id \“: “1 \”,\“category_name \”:\“BEVERAGES \”,\“image_id \”:\“7 \”}“, ”{\“category_id \”:\“3 \”,\“category_name \ “:\”BREAKFAST \“,\”image_id \“:\”5 \“}”, “{\”category_id \“:\”3 \“,\”category_name \“:\”BREAKFAST \ “image_id \”:\“6 \”}“, – Murali

+0

这是一个字符串列表。有效的json字符串将如下所示:'@“[\ n {\”category_id \“:\”1 \“,\”category_name \“:\”BEVERAGES \“,\”image_id \“:\”6 \“} \ n“\”category_id \“:\”1 \“,\”category_name \“:\”BEVERAGES \“,\”image_id \“:\”7 \“},\ n {\”category_id \“: \“category \”:\“3 \”,\“category_name \”:\“BREAKFAST \”,\“image_id \”:\“5 \”},\ n {\“category_id \ “:\”BREAKFAST \“,\”image_id \“:\”6 \“} \ n]”' –

0

这种反应

([["{\"category_id\":\"1\", \"category_name\":\"BEVERAGES\", \"image_id\":\"6\"}"]])

是不妥当的JSON。发生这种情况时,服务器“希望”发送JSON,但没有正确完成;) - 或者您无法正确输出JSON。

的JSON大概应该是这样的:

[[{"category_id":"1","category_name":"BEVERAGES","image_id":"6"}]] 

[[{"category_id":1,"category_name":"BEVERAGES","image_id":6}]] 

注:键/值对可能会被重新排序。

此外,确保指定了正确的Accept头值,例如请求中的“application/json”(注意:在编辑之前不正确)。

然后,在尝试使用JSON解析器解析响应之前,请检查状态码(应为200 (OK))和MIME类型。如果你希望JSON,你应该得到一个Content-Type头(另见NSURLResponse财产MIMEType),其值应为application/json

+0

MIME类型为text/html – Murali

+0

@Murali'text/html'不应该被解析为JSON。但是,'([[“{\”category_id \“:\”1 \“,\”category_name \“:\”BEVERAGES \“,\”image_id \“:\”6 \“}”]])'doesn看起来也不像html。 – CouchDeveloper

+0

我不明白从早上起这个反应,我正在为此工作。我仍然无法做到。我正在得到那个回应。我已经检查了很多次,但是回应相同。 MIME类型:text/html – Murali

-1

最好的解决将是解决它在服务器端和编码正常。

如果这是不可能的使用[jsonString stringByReplacingOccurrencesOfString:@"\" withString:@""];