2015-12-28 92 views
0

我想JSON字符串轉換成C#的DataTable和我的JSON字符串包含另一個JSON字符串。 我不想轉換內部的json字符串(只保留字符串)。這是我的代碼C#的Json反序列化錯誤

string js = "[{\"FirstName\":\"first\",\"LastName\":\"second\",\"jsonStr\":\"[{\"abc\":\"a\",\"xyz\":\"x\"}]\"}]"; 
      DataTable dt = (DataTable)JsonConvert.DeserializeObject(js, (typeof(DataTable))); 
      gv.DataSource = dt; 
      gv.DataBind(); 

但我得到一個錯誤

解析時遇到了意外字符值後:一。路徑 '[0] .jsonStr',第1行,位置56.

+0

注知道你甚至有效嗎?我只是將它粘貼在一個在線解析中,它顯示了你的錯誤。其次,我不確定Json Converter是否知道如何從Json創建數據庫。您可能需要將json解析爲一個對象,然後從對象中通過定義列和行來創建數據表。 – qamar

+0

在字符串'\ r \ n'中放了一些新的行,它比字符 –

+0

更容易計數,請接受答案。它也會對其他人有用。 – asakura89

回答

1

您的JSON無效。轉義後,就變成了下面的字符串:

[ 
    { 
     "FirstName" : "first", 
     "LastName" : "second", 
     "jsonStr" : "[{" abc ":" a "," xyz ":" x "}]" 
    } 
] 

堆棧溢出的語法高亮顯示,您的JSON是無效的。
您也可以檢查JSON的有效性here

爲了使其有效,內jsonStr你的報價應已再次逃脫:

string js = "[{\"FirstName\":\"first\",\"LastName\":\"second\",\"jsonStr\":\"[{\\\"abc\\\":\\\"a\\\",\\\"xyz\\\":\\\"x\\\"}]\"}]"; 

這個C#字符串現在包含以下JSON,這是有效的:

[ 
    { 
     "FirstName": "first", 
     "LastName": "second", 
     "jsonStr": "[{\"abc\":\"a\",\"xyz\":\"x\"}]" 
    } 
] 
+0

謝謝:)我沒有注意到。 –