2011-12-07 68 views
1

我有一個WCF服務。網址是:http://iphone.clickcelltest.com/EduLink.svc/GetLevel刪除用Newtonsoft.Json轉義引號

方法具有以下屬性:

[WebGet(ResponseFormat=WebMessageFormat.Json)] 

我從數據庫中獲取數據,然後在類集合/列表。 我使用Newtonsoft.Json DLL將集合轉換爲json字符串。它做得非常好,但我需要將它發送到iPhone。

但是,我不必要的引號逃脫。我瞭解它發生的原因。

但是,有沒有辦法避免它

所以,我怎樣才能改變目前的結果是:

"{\"Object\":[{\"LevelID\":4,\"LevelName\":\"Level A\"}]}" 

{"Object":[{"LevelID":4,"LevelName":"Level A"}]} 

讓我知道,如果需要更清晰。

非常感謝。

回答

3

這看起來像returning a manually JSON-serialized string的結果,WCF,然後再序列化。而不是返回您使用Json.NET構建的字符串,使您的服務的返回值與您要返回的數據類型匹配並直接返回該數據。

如果由於某種原因您特別需要使用Json.NET,那麼使用HttpHandler而不是WCF將允許您在沒有WCF干擾的情況下在較低級別做出響應。

+0

真棒...這實際上工作。我早些時候嘗試過,但做了一個愚蠢的錯誤。另外,我並不想把創建自己的類作爲返回類型。相反,想到使用Newtonsoft.Json DLL讓我的生活變得更輕鬆,認爲最終它會是返回的json。但是,有點痛苦更好。順便說一下,@Dave我總是喜歡讀你的博客。非常感謝。 – iMatoria

+0

@iMatoria:感謝客氣的話。如果您不希望爲此創建類,則另一個選項(至少在ASMX下;我沒有在WCF中進行過測試)是使用IEnumerable作爲返回集合而不指定類型。再加上使用LINQ來選擇匿名類型的集合,這種方法在某些情況下很好地工作。 –

+0

呃,打字錯誤...我打算說「使用IEnumerable作爲返回類型來返回集合而不指定類型」。 –

0

使用stringByReplacingOccurencesOfString方法NSString

NSString * jsonString = @"{\"Object\":[{\"LevelID\":4,\"LevelName\":\"Level A\"}]}"; 
NSString * filteredString = [jsonString stringByReplacingOccurrencesOfString:@"\\" withString:@""]; 
NSLog (@"%@",filteredString); 
+0

我已經這樣做了......但是,如果LevelName是「Level \ 2」,這可能會有問題。 – iMatoria