【问题标题】:How to map JSON response to custom class object如何将 JSON 响应映射到自定义类对象
【发布时间】:2014-01-21 08:47:40
【问题描述】:

我正在使用 unirest.io 在 C# 中调用 API。我得到以下 JSON 响应(作为 response.Body)。

{
    "persons": [{
        "id": "a010",
        "name": "Joe",
        "subjects": [
            "Math",
            "English"
        ]
    },
    {
        "id": "b020",
        "name": "Jill",
        "subjects": [
            "Science",
            "Arts"
        ]
    }]
}

我尝试将其映射到我的自定义类对象,如下所示。

HttpRequest request = Unirest.get(API_V1_URL).header("accept", "application/json");
HttpResponse<string> response = request.asString();
var serializer = new JavaScriptSerializer();
persons = serializer.Deserialize<Persons>(response.Body);

但它总是通过设置 persons.infos = NULL;

我的自定义类

public class Persons
{
    public PersonInfo[] infos;
}

public class PersonInfo
{
    public string id;
    public string name;
    public string[] subjects;
}

请帮助我如何正确地将此类 JSON 映射到我的 .Net 类对象?

【问题讨论】:

  • 这是一个方便的工具 - 只需粘贴一些示例 JSON,它就会生成一个兼容的 C# 对象:json2csharp.com

标签: c# json jsonserializer unirest


【解决方案1】:

Deserialize&lt;T&gt; 中传递Persons 而不是Vendors

persons = serializer.Deserialize<Persons>(response.Body);

重命名属性

public PersonInfo[] infos;

public PersonInfo[] persons;

此外,我建议您使用自动属性。即

public PersonInfo[] persons{get;set;}

【讨论】:

  • 通过人员而不是供应商(这是一个错字)。将信息重命名为人员,这解决了我的问题。非常感谢。
猜你喜欢
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 2020-09-13
  • 2013-06-16
  • 2017-12-24
  • 2015-06-27
  • 1970-01-01
相关资源
最近更新 更多