c# - 使用动态对象反序列化 JSON

标签 c# json restsharp

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

这是我的类(class)现在的样子:

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; }
    }
}

这是 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"
        } [...]
}

最佳答案

由于这个 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"] });

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

输出看起来像这样:

Deserialization Output

关于c# - 使用动态对象反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505096/

相关文章:

php - 在 PHP $_COOKIE global 中转义 JSON

c# - 发出异步休息请求

c# - 无法访问 FHIR 模型中的 Procedure.reason

c# - 使用 Apache 服务器的 ClickOnce 更新

Python SQL/JSON 不匹配的输入 'ON' 期望 'EOF'

java - 获取 org.json.JSONException : End of input at character 0 errror in Android App

c# - 如何在 MonoTouch 中绑定(bind)这些?

c# - SQL 中的 "Dynamic"表?

authentication - 请求已中止 : Could not create SSL/TLS secure channel.(RestSharp、SSL 客户端证书)

c# - RestSharp 是否覆盖手动设置的内容类型?