0

私はasp.net mvc4とjson.netを使用しています

私はhttp://api.domaintools.com/v1/domaintools.com/whois/のようなjson構造を持っています

自分のクラスに逆シリアル化するにはどうすればよいですか? これは、クラスを構築する方法を理解するために、少し複雑な構造に見えますか?

私はこれまでに試しました:

 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 (memberservices@domaintools.com)\\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 (memberservices@domaintools.com)\\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 (memberservices@domaintools.com)\\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
4

1 に答える 1

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);
于 2013-05-14T04:36:34.510 に答える