![](/img/trans.png)
[英]How can I convert a json string to a json array using Newtonsoft?
[英]How Convert JSON to Dataset using Newtonsoft
我從 Web 服務返回了以下 JSON。 當我驗證它時,它是正確的。 它有牛頓的斜線,因為其中有引號表示英寸。
"\"[{\\\"GOI\\\":34037500500.0,\\\"Ship Date\\\":\\\"2022-09-09T00:00:00\\\",\\\"Quote File\\\":\\\"9W0ZYEXA.0200500\\\",\\\"Qty\\\":1.0,\\\"Price\\\":29016.50,\\\"PCL\\\":163,\\\"Unit Version\\\":\\\"12.71\\\",\\\"Comp Version\\\":\\\"12.71\\\",\\\"Rep Office\\\":\\\"HTS fjdis\\\",\\\"Is disliw Plus High Pressure Const\\\":\\\"N\\\",\\\"List Price\\\":\\\"97764.5\\\",\\\"Model No\\\":\\\"CAH028GDGM\\\",\\\"Unit Type\\\":\\\"Dave34\\\",\\\"Unit Size\\\":\\\"28\\\",\\\"Unit Height\\\":\\\"60\\\",\\\"Unit Width\\\":\\\"90\\\",\\\"Has Electric Heat\\\":\\\"Y\\\",\\\"Electric Heat Voltage\\\":\\\"480\\\",\\\"Electric Heat KW\\\":\\\"21\\\",\\\"Electric Heat Control Type\\\":\\\"Vernier SCR\\\",\\\"Electric Heat Steps\\\":\\\"N/A\\\",\\\"Has Electric Heat Temp Control\\\":\\\"Y\\\",\\\"Has Electric Heat Disconnect\\\":\\\"Y\\\",\\\"Electric Heat Control Signal\\\":\\\"0 - 10V\\\",\\\"Supply Air Vol\\\":\\\"12500\\\",\\\"Exhaust Air Vol\\\":\\\"9595\\\"}]\""
我的代碼在 JsonConvert.DeserializeObject(searchResults) 上引發異常:
try
{
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
if (webResponse.StatusCode == HttpStatusCode.OK)
{
using (Stream responseStream = webResponse.GetResponseStream())
{
string searchResults = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd();
DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(searchResults);
DataTable dataTable = dataSet.Tables["Search Results"];
dataGridView1.DataSource = dataTable;
}
}
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
// TODO - log error
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
// TODO - log error
}
出現以下錯誤:
Newtonsoft.Json.JsonSerializationException: '讀取 DataTable 時出現意外的 JSON 令牌。 預期 StartArray,得到字符串。 路徑'',第 1 行,position 770。
為什么? 任何幫助將不勝感激。
您的 json 中有一個錯誤,看起來它被序列化了兩次並且您的 json 不包含任何數據集,您的 json 應該看起來像這樣
var json= "[{\"GOI\":33861123400.0,...]}"
如果你有一個 DataSet json 應該是這樣的
{\"Table1\":[{\"GOI\":33861123400.0,...]}"
但您可以立即將其轉換為 DataTable
DataTable dataTable = JsonConvert.DeserializeObject<DataTable>(searchResults);
dataGridView1.DataSource = dataTable;
但如果您仍然需要一個 DataSet,您可以創建它並添加您的 dataTable
DataSet ds = new DataSet();
ds.Tables.Add(dataTable);
ds.Tables[0].TableName = "Search Results";//Optional
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.