2015-01-13 69 views
1

我一直在努力尋找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

Screenshot for error

+0

請放一點更多時間在發佈之前對代碼進行格式化 - 它不會花費很長時間,但會使可讀性發生巨大變化。 –

+0

當然@JonSkeet。現在看起來很棒。 – Vicky

+1

理想情況下,您應該隔離一段失敗的JSON,並將其包含在您的問題中 - 最好儘可能簡化它(和您的代碼)之後。試着想出一個簡短但完整的程序來展示問題。 –

回答

3

,如果你使用這些類它將工作:

public class Collection1 
{ 
    public string price { get; set; } 
    public object 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 frequency { get; set; } 
    public int version { get; set; } 
    public bool newdata { get; set; } 
    public string lastrunstatus { get; set; } 
    public string lastsuccess { get; set; } 
    public string thisversionstatus { get; set; } 
    public string thisversionrun { get; set; } 
    public Results results { get; set; } 
} 

本網站將從JSON自動神奇地打造C#類:http://json2csharp.com/

+0

該網站是殺手,爲我節省了一堆時間,謝謝! –

相關問題