使用动态对象反序列化JSON

Pet*_*Fox 11 c# json restsharp

我有一个JSON对象,附带一长串区号.不幸的是,每个区域代码都是Data对象列表中的对象名称.如何创建一个允许RestSharp反序列化内容的类?

以下是我班级现在的样子:

public class phaxioResponse
{
    public string success { get; set; }
    public string message { get; set; }
    public List<areaCode> data { get; set; }

    public class areaCode
    {
        public string city { get; set; }
        public string state { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是JSON内容:

{
    success: true
    message: "277 area codes available."
    data: {
        201: {
            city: "Bayonne, Jersey City, Union City"
            state: "New Jersey"
        }
        202: {
            city: "Washington"
        state: "District Of Columbia"
        } [...]
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ano 18

由于这个JSON不是C#友好的,我不得不做一些hackery来使它正常出来.但是,结果非常好.

var json = JsonConvert.DeserializeObject<dynamic>(sampleJson);
var data = ((JObject)json.data).Children();
var stuff = data.Select(x => new { AreaCode = x.Path.Split('.')[1], City = x.First()["city"], State = x.Last()["state"] });
Run Code Online (Sandbox Code Playgroud)

此代码将生成最能代表数据的匿名类型.但是,匿名类型可以很容易地替换ctor为更普通的DTO类.

输出看起来像这样:

反序列化输出