2015-08-28 132 views
-1

我想在C#.NET 解析JSON字符串,但它拋出異常JSON字符串解析

string str= "{\"id\"=>\"\", \"textContent\"=>\"Services\", \"nodeName\"=>\"SPAN\", \"class\"=>\"ng-binding\", \"html\"=>\"<span class=\"ng-binding\">Services</span>\", \"rect\"=>{\"center_y\"=>252, \"center_x\"=>90, \"height\"=>26, \"width\"=>180, \"bottom\"=>108, \"left\"=>0, \"right\"=>90, \"y\"=>240, \"x\"=>0, \"top\"=>95}, \"nodeType\"=>\"ELEMENT_NODE\", \"webView\"=>\"NoResourceEntry-100\"}"; 
str = str.Replace("\"", "'"); 
str = str.Replace("=>", ":"); 
dynamic stuff = Json.Decode(str); 

string name = stuff.id; 
string address = stuff.textContent; 

它會給例外

型「System.TypeInitializationException」的第一次機會異常發生在JsonProject.exe中 'System.Web.Helpers.Json'的類型初始值設定項引發異常。

即使我不保換「與」仍然會拋出異常。

我還沒有使用的Json以前和很新的JSON。我用葫蘆,Android和那裏我得到這個JSON字符串。

+0

您的json無效。 http://jsonlint.com/ – Eser

+0

你可以檢查一下,如果json是否正確地得到「改造」,最終得到解碼的str?通過json驗證器運行它 – BobbyTables

回答

0

你將不得不與只是盲目地更換所有"'這裏特別\"<span class=\"ng-binding\">Services</span>\",因爲這將成爲'<span class='ng-binding'>Services</span>'這是無效的問題。

我會建議使用重GEX到後=>或之前僅在更換"一個,

另外,作爲在評論中提到使用調試器來找出str是什麼,你要更換和使用在線工具來檢查其有效

0

後你的字符串不是JSON。

試試這個:在你的字符串

string str= @" 
{""id"":"""", ""textContent"":""Services"", ""nodeName"":""SPAN"", ""class"":""ng-binding"", ""html"":""<span class='ng-binding'>Services</span>"", ""rect"":{""center_y"":252, ""center_x"":90, ""height"":26, ""width"":180, ""bottom"":108, ""left"":0, ""right"":90, ""y"":240, ""x"":0, ""top"":95}, ""nodeType"":""ELEMENT_NODE"", ""webView"":""NoResourceEntry-100""} 
"; 

str = str.Replace("=>", ":"); 
str.Dump(); 
dynamic stuff = Json.Decode(str); 

string name = stuff.id; 
string address = stuff.textContent; 
+0

它不工作。在http://jsonlint.com/如果我替換=>:它會顯示有效的JSON,但在C#程序它拋出異常 – Shelar

0

做出改變爲

<span class="ng-binding">Services</span> 

<span class='ng-binding'>Services</span> 

然後更換你的性格。

str = str.Replace("\"", ""); //with blank value 
str = str.Replace("=>", ":"); 

最後你的字符串變成這樣了。

{"id":"", "textContent":"Services", "nodeName":"SPAN", "class":"ng-binding", "html":"<span class='ng-binding'>Services</span>", "rect":{"center_y":252, "center_x":90, "height":26, "width":180, "bottom":108, "left":0, "right":90, "y":240, "x":0, "top":95}, "nodeType":"ELEMENT_NODE", "webView":"NoResourceEntry-100"}