2015-02-24 119 views
3

因为硬件限制我需要解析无效的JSON格式。使用NSJSONSerialization如果JSON无效或者有一些特殊字符返回nil。例如解析无效的JSON

{ 
"/http/header":" 
    {\"code\":\"200\", 
    \"response\":\"The request has succeeded\", 
    \"body\":\H4؊捵ե7Ǫ㖮OƋ\"V鈭핬Ͱ枥ù޷+=豞EA㯕頎̵4kև΃ 
ΆץmZ-\"뺷뀕ԍ볰孖擽o<ҲA혃褿Уҥx蒊㟩g=Ң흨׮4YhkeȤ̪⤍βQ 
䷹!긗Â㍡Զ䧡|jŔ䴕uA蝓蒎▖嗷н骭--̫Tʴͽ"} 
} 

这是一个错误的JSON格式,但如果我们解决这个JSON格式的问题仍然存在,因为我们有特殊字符。 Gson在JAVA上用这种JSON代码没有任何问题,我可以得到的代码和响应值唯一的nil值就是body。有值得拥有的价值吗?

回答

0

您可以更正json格式吗?因为json值不能包含换行符。

有效的JSON应该是这样的:

{ 
    "/http/header":{ 
    "code":"200", 
    "response":"The request has succeeded", 
    "body":"H4؊捵ե7Ǫ㖮OƋ\"V鈭핬Ͱ枥ù޷+=豞EA㯕頎̵4kև΃ΆץmZ-\"뺷뀕ԍ볰孖擽o<ҲA혃褿Уҥx蒊㟩g=Ң흨׮4YhkeȤ̪⤍βQ䷹!긗Â㍡Զ䧡|jŔ䴕uA蝓蒎▖嗷н骭--̫Tʴͽ" 
    } 
} 

所以,你可以替换所有的换行和不必要的反斜线

+0

的结果仍然没有使用'NSJSONSerialization'。因为特殊字符。 GSON在Java中给出了一个带有代码和响应值的散列,只有body有一个空值。 – dferreira 2015-02-24 14:05:36

0

要检查您的JSON有效或无效的使用:http://pro.jsonlint.com/

{ 
    "/http/header": { 
     "code": "200", 
     "response": "The request has succeeded", 
     "body": "H4؊捵ե7Ǫ㖮OƋ\"V鈭핬Ͱ枥ù޷+=豞EA㯕頎̵4kև΃ΆץmZ-\"뺷뀕ԍ볰孖擽o<ҲA혃褿Уҥx蒊㟩g=Ң흨׮4YhkeȤ̪⤍βQ䷹!긗Â㍡Զ䧡|jŔ䴕uA蝓蒎▖嗷н骭--̫Tʴͽ" 
    } 
} 
+0

但我想要的是使用无效的Json。 NSJSONSerialization不接受中文字符。我可以手动删除中断,但我仍然会遇到同样的问题。 – dferreira 2015-02-24 12:59:24

+0

你可以在这里添加你的解析代码.. – Yuyutsu 2015-02-25 05:18:01