2013-11-03 279 views
0

我想解析api調用返回的JSON數據。 價值的部分可能有雙重qutoes指示以英寸爲單位的項目大小。 例如:「description」:「size is 7」x 8「...」(我截斷了字符串。)JSON:用雙引號引起的問題

json.net解析該值時拋出異常。 我在Json noob,在C#有點生疏。 我無法弄清楚如何解決這個問題。

這裏是我使用的代碼。我正在清理任何html標籤,並設置下面的設置參數。我已經研究了很多,但谷歌是不是因爲太多的結果,幫助使用像JSON解析亞太經社會等

   string value = WebUtility.HtmlDecode(reader.ReadToEnd()); 
       value = Regex.Replace(value, "<.+?>", string.Empty);      
       JsonSerializerSettings set = new JsonSerializerSettings(); 
       set.StringEscapeHandling = StringEscapeHandling.Default; 
       set.StringEscapeHandling = StringEscapeHandling.EscapeHtml; 
       set.StringEscapeHandling = StringEscapeHandling.EscapeNonAscii; 

       myo = JsonConvert.DeserializeObject<myboject>(value,set); 
+3

「description」:「size is 7」x 8「...」不是有效的JSON,所以JsonConvert無法解析它。在JSON中的雙引號必須用反斜線轉義 - 例如「description」:「size is 7 \」x 8 \「...」。爲什麼你必須清理HTML標籤? JSON不應該包含HTML標籤。確定API正在返回JSON? – shf301

+0

是的,我認爲HtmlDecode調用是搞砸了。如果有的話,反序列化JSON,然後html解碼或編碼各個屬性值。 – ps2goat

+1

謝謝。數據實際上是不好的。它編碼了html實體。所以我不得不解碼,然後使用正則表達式來刪除html標籤。我嘗試過各種方法,但最好是使用正則表達式去除html標籤。 – user697697

回答

0

話返回只要做到:

yourJsonString = yourJsonString.Replace("\"", "\\u022"); 
object o = JSonConvert.Deserialize(yourJsonString); 

記住,\ U022是ASCII碼雙引號。因此,替換\ u022的引號將被您的瀏覽器識別。

並使用\在「\ u022」中使c#識別反斜槓字符。

Cheers

+0

litteraly改變「 - > \ u022 – Andro