首页 > 解决方案 > 如何将 JSON 响应反序列化到我的列表中?

问题描述

我想解析以下 JSON 响应:

{
  "message": "string",
  "errorCode": "string",
  "totalSize": 0,
  "offset": 0,
  "done": true,
  "nextRecordsUrl": "string",
  "records": [
    {
      "id": "string",
      "name": "string",
      "external_ID_vod__c": "string",
      "vExternal_Id_vod__c": "string"
    }
  ]
}

**请注意,有多个“记录”

我用来反序列化 JSON 响应的相关类是:

public class RecordProduct
        {
            public string id { get; set; }
            public string name { get; set; }
            public string external_ID_vod__c { get; set; }
            public string vExternal_Id_vod__c { get; set; }
        }

public class Products
        {
            public string message { get; set; }
            public string errorCode { get; set; }
            public int totalSize { get; set; }
            public int offset { get; set; }
            public bool done { get; set; }
            public string nextRecordsUrl { get; set; }
            public List<RecordProduct> records { get; set; }

        }

调用 API 的代码:

public void getAllProductInfo()
        {
            RestClient client = new RestClient("blahblahblah/");

            RestRequest request = new RestRequest("/api/Products", Method.GET);

            string securityToken = getBearerToken();
            request.AddHeader("Accept", "application/json");
            request.AddHeader("Authorization", "Bearer " + securityToken);

            IRestResponse<JsonResponseSetup.Datum.Products> response = client.Execute<JsonResponseSetup.Datum.Products>(request);

            var res = response.Data.records;
            res.ForEach(Console.WriteLine);

         }

当我执行最后一行时:res.ForEach(Console.WriteLine);我没有打印记录。

编辑:我想通了。我只是错误地访问了记录的成员。以下代码代替了我的代码的最后两行。

foreach(var item in response.Data.records)
{
   Console.WriteLine($"name: {item.name}, id: {item.id}");
}

标签: c#jsonrestsharpjson-deserialization

解决方案


尝试这个

Products facebookFriends = new JavaScriptSerializer().Deserialize<Products>(result);

推荐阅读