我一直在努力尋找JSON反序列化中的代碼有什麼問題,並閱讀了很多帖子,但找不到確切的解決方案。 JSON由客戶端發送,有時它成功並且有時會失敗,錯誤爲 「沒有爲'System.String'類型定義無參數構造函數。」這條線上的 :RootObject myData = new JavaScriptSerializer()。Deserialize(json);JSON反序列化中沒有無參數的構造函數定義錯誤
C#
DataTable dt = new DataTable();
dt.Columns.Add("isbn", typeof(string));
dt.Columns.Add("price", typeof(string));
dt.Columns.Add("uri", typeof(string));
using (var WebClient = new WebClient())
{
string json = WebClient.DownloadString("http://www.pricetree.com/internal/test.txt");
RootObject myData = new JavaScriptSerializer().Deserialize<RootObject>(json);
foreach (var item in myData.results.collection1)
{
dt.Rows.Add(item.url, item.price, item.uri);
}
}
類
public class Collection1
{
public string price { get; set; }
public string uri { get; set; }
public string url { get; set; }
}
public class Results
{
public List<Collection1> collection1 { get; set; }
}
public class RootObject
{
public string name { get; set; }
public int count { get; set; }
public string lastrunstatus { get; set; }
public string lastsuccess { get; set; }
public Results results { get; set; }
}
我已經看到從下面螺紋下方一些答案,但沒有奏效。任何人都可以建議我正確的解決方案
No parameterless constructor defined for type of 'System.String' during JSON deserialization
請放一點更多時間在發佈之前對代碼進行格式化 - 它不會花費很長時間,但會使可讀性發生巨大變化。 –
當然@JonSkeet。現在看起來很棒。 – Vicky
理想情況下,您應該隔離一段失敗的JSON,並將其包含在您的問題中 - 最好儘可能簡化它(和您的代碼)之後。試着想出一個簡短但完整的程序來展示問題。 –