2011-05-16 26 views
3

我正在使用目標C JSON解析庫並面臨一些問題。我的web服務返回JSON響應。當響應字符串中存在轉義字符時,My Parser失敗。以下是我從服務器收到的回覆。現在JSON response from the serveriPhone - 在JSON解析中逃逸charecter問題

如果觀察者行 「ITEM_NAME」: 「花$ 10andget $ 24worthofdonutsfromJim \'sDonutShop」 中,有一個轉義字符吉姆\ S甜甜圈。我的解析器無法解析這個例外。

-JSONValue failed. Error trace is: (
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=8 \"Illegal escape sequence '0x27'\" UserInfo=0x79cc420 {NSLocalizedDescription=Illegal escape sequence '0x27'}", 
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: item_name\" UserInfo=0x79cc510 {NSUnderlyingError=0x79cc470 \"Illegal escape sequence '0x27'\", NSLocalizedDescription=Object value expected for key: item_name}", 
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: parameters\" UserInfo=0x79cc5c0 {NSUnderlyingError=0x79cc540 \"Object value expected for key: item_name\", NSLocalizedDescription=Object value expected for key: parameters}" 

所有我現在用的就是JSON.h

NSDictionary * responseDic = [responseString JSONValue]; 

有人請幫助我!謝謝 !!

+3

這是JSON的有效轉義字符嗎? http://www.jsonlint.com/說這是不正確的。有沒有機會修復您從中獲取數據的Web服務?如果不是,那麼我想你可以嘗試預處理輸入字符串,用'''替換所有'\''。 – 2011-05-16 07:47:29

+0

@Alex - 這應該是一個答案:) – MByD 2011-05-16 07:54:18

+0

@Alex S. ohh。 。但是我的web服務實際上是從數據庫中提取一些html字符串並以JSON格式打印出來。我可以預處理字符串,並可以用'替換\',但是你有任何想法,有沒有其他一些轉義字符在HTMl中使用,這也需要照顧或什麼..? – 2011-05-16 07:56:29

回答

5

轉義序列\'不是有效的JSON。請參閱json.org

你應該向Web服務的維護者提出一個錯誤。

作爲解決辦法,您可以嘗試用單個'(例如,

NSString* hackedString = [originalString stringByReplacingOccurrencesOfString: @"\\'" withString: @"'"]; 
+1

是的,我必須改變服務。但是我寫了總共10個服務,所以我只是修改了JSON庫來爲我做這個預處理,並且它的工作正常:-)。 。謝謝 !! – 2011-05-16 10:31:27