2015-02-24 72 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