2013-05-14 105 views
0

我使用asp.net mvc4和json.netdomaintools json反序列化?

和我有一個JSON結構像http://api.domaintools.com/v1/domaintools.com/whois/

我該如何反序列化到我自己的類?這看起來有點複雜的結構讓我意識到如何建立我的班級?

我試過到目前爲止:

var json = "{\"response\":{\"registrant\":\"DomainTools, LLC\",\"registration\":{\"created\":\"1998-08-02\",\"expires\":\"2014-08-01\",\"updated\":\"2010-08-31\",\"registrar\":\"CHEAP-REGISTRAR.COM\",\"statuses\":[\"ok\"]},\"name_servers\":[\"NS1.P09.DYNECT.NET\",\"NS2.P09.DYNECT.NET\",\"NS3.P09.DYNECT.NET\",\"NS4.P09.DYNECT.NET\"],\"whois\":{\"date\":\"2013-05-12\",\"record\":\"Domain name: domaintools.com\\n\\nRegistrant Contact:\\n DomainTools, LLC\\n Domain Administrator ([email protected])\\n +1.2068389035\\n Fax: +1.2068389056\\n 2211 5th Avenue\\n Suite 201\\n Seattle, WA 98121\\n US\\n\\nAdministrative Contact:\\n DomainTools, LLC\\n Domain Administrator ([email protected])\\n +1.2068389035\\n Fax: +1.2068389056\\n 2211 5th Avenue\\n Suite 201\\n Seattle, WA 98121\\n US\\n\\nTechnical Contact:\\n DomainTools, LLC\\n Domain Administrator ([email protected])\\n +1.2068389035\\n Fax: +1.2068389056\\n 2211 5th Avenue\\n Suite 201\\n Seattle, WA 98121\\n US\\n\\n Status: Active\\n Creation Date: 13-Jul-2002\\n Expiration Date: 13-Jul-2016\\n Name Server: NS1.P09.DYNECT.NET\\n Name Server: NS2.P09.DYNECT.NET\\n Name Server: NS3.P09.DYNECT.NET\\n Name Server: NS4.P09.DYNECT.NET\\n\"}}}"; 

public class Response 
    { 
     public string registrant { get; set; } 
     public Registration registration { get; set; } 
     public List<string> name_servers { get; set; } 
     public WhoIs whois { get; set; } 
    } 
    public class Registration 
    { 
     public DateTime created { get; set; } 
     public DateTime expires { get; set; } 
     public DateTime updated { get; set; } 
     public string registrar { get; set; } 
     public List<string> statuses { get; set; } 


    } 
    public class WhoIs 
    { 
     public DateTime date { get; set; } 
     public string record { get; set; } 

    } 
var response = JsonConvert.DeserializeObject<Response>(json); >> null 

回答

1

它始終是一個好的開始http://json2csharp.com/網站找到合適的結構,你的榜樣它給:

public class Registration 
{ 
    public string created { get; set; } 
    public string expires { get; set; } 
    public string updated { get; set; } 
    public string registrar { get; set; } 
    public List<string> statuses { get; set; } 
} 

public class Whois 
{ 
    public string date { get; set; } 
    public string record { get; set; } 
} 

public class Response 
{ 
    public string registrant { get; set; } 
    public Registration registration { get; set; } 
    public List<string> name_servers { get; set; } 
    public Whois whois { get; set; } 
} 

public class RootObject 
{ 
    public Response response { get; set; } 
} 

您需要使用RootObject作爲你想要反序列化的類:

var response = JsonConvert.DeserializeObject<RootObject>(json); 
+0

哇,超級回答,我沒有kn有這樣一個工具存在。非常感謝 – 2013-05-14 04:41:14