C# JSON.Net CustomCreationConverter 与父对象

狗吃狗

如何通过反序列化提取封装在data响应对象中的返回 json 响应的负载

这是 json 响应:

  {"data":{"status":"ok","created_at":"2017-05-26 17:34:12.224524Z","app_version":1.0,"api_version":1.0}}

我的转换器类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Converters;

namespace Sample.Models
{
    class StatusConverter : CustomCreationConverter<Status>
    {
        public override Status Create(Type objectType)
        {

            return new Status();
        }
     }
}

我的模型 Status

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace Sample.Models
{

    class Status
    {
        [JsonProperty("app_version")]
        public string AppVersion { get; set; }

        [JsonProperty("api_version")]
        public string APIVersion { get; set; }

        [JsonProperty("status")]
        public string CurrentStatus { get; set; }

    }
}

API调用使用 RestClient

    public void checkConnectivityStatus()
    {
        var client = new RestClient(BaseUrl);

        var request = new RestRequest("status", Method.GET);

        IRestResponse response = client.Execute(request);
        var content = response.Content; // raw content as string
        Status status = JsonConvert.DeserializeObject<Status>(content, new StatusConverter());
        Console.Write(status.AppVersion);
    }

编辑:更新模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace Sample.Models
{
    public interface IStatus
    {
        string AppVersion { get; set; }

        string APIVersion { get; set; }

        string CurrentStatus { get; set; }
    }

    [JsonObject]
    class Status : IStatus
    {
        [JsonProperty("app_version")]
        public string AppVersion { get; set; }

        [JsonProperty("api_version")]
        public string APIVersion { get; set; }

        [JsonProperty("status")]
        public string CurrentStatus { get; set; }

    }
}
玛丽亚·伊内斯·帕尼萨里

您只需要一个包装器对象来进行响应。

public class DeserializedResponse 
{
     [JsonProperty("data")]
     public Status Status { get; set; }
}

然后像这样使用它:

//var content = {"data":{"status":"ok","created_at":"2017-05-26 17:34:12.224524Z","app_version":1.0,"api_version":1.0}}

var deserializedResponse = JsonConvert.DeserializeObject<DeserializedResponse>(content);

Debug.Assert(deserializedResponse.Status.CurrentStatus == "ok");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Json.NET-CustomCreationConverter中单个属性的默认反序列化行为

来自分类Dev

清单<对象>的c#JSON.Net NullValueHandling

来自分类Dev

C#ASP.NET JSON对象数组

来自分类Dev

C#JSON.net空嵌套对象

来自分类Dev

C#Json.NET-JSON到C#对象

来自分类Dev

使用CustomCreationConverter进行JSON反序列化以创建类型并注入数据

来自分类Dev

JSON.NET序列化列表作为父对象的属性

来自分类Dev

System.Text.Json使用C#.NET Core 3.1访问json对象的Json对象

来自分类Dev

JSON.net:使用JsonConverter将1个对象转换为2个没有父对象的单独数组

来自分类Dev

如何选择同名JSON对象?C#asp.net

来自分类Dev

通过解析JSON对象返回父对象

来自分类Dev

计数父JSON对象中的对象

来自分类Dev

通过解析JSON对象返回父对象

来自分类Dev

c#newtonsoft json.net在对象内填充json对象导致空值

来自分类Dev

JSON.NET:如何根据父(所有者)对象值反序列化接口属性?

来自分类Dev

JSON.NET:如何根据父(所有者)对象值反序列化接口属性?

来自分类Dev

JSON.NET:如何根据父(所有者)对象值反序列化接口属性?

来自分类Dev

使用Json.Net C#获取json对象中的值和键

来自分类Dev

如何在C#中使用Json.NET从JSON访问嵌套对象

来自分类Dev

使用Json.NET(C#)从JSON作为字符串读取子对象

来自分类Dev

使用Json.Net C#获取json对象中的值和键

来自分类Dev

使用JSON.NET将C#对象转换为JSON时,多余的'\'是逗号

来自分类Dev

如何使用JSON.Net从C#中的JSON对象创建数组

来自分类Dev

如何在C#中使用JSON.Net查询和枚举复杂的JSON对象

来自分类Dev

json.net在C#中反序列化json对象

来自分类Dev

如何使用JSON.net从c#中的JSON文件中获取密钥及其对象?

来自分类Dev

C# 使用 newtonsoft json.net 将 json 数组转换为对象列表

来自分类Dev

在C#JSON.NET中解析字符串或对象到对象

来自分类Dev

在C#JSON.NET中将字符串或对象解析为对象

Related 相关文章

  1. 1

    Json.NET-CustomCreationConverter中单个属性的默认反序列化行为

  2. 2

    清单<对象>的c#JSON.Net NullValueHandling

  3. 3

    C#ASP.NET JSON对象数组

  4. 4

    C#JSON.net空嵌套对象

  5. 5

    C#Json.NET-JSON到C#对象

  6. 6

    使用CustomCreationConverter进行JSON反序列化以创建类型并注入数据

  7. 7

    JSON.NET序列化列表作为父对象的属性

  8. 8

    System.Text.Json使用C#.NET Core 3.1访问json对象的Json对象

  9. 9

    JSON.net:使用JsonConverter将1个对象转换为2个没有父对象的单独数组

  10. 10

    如何选择同名JSON对象?C#asp.net

  11. 11

    通过解析JSON对象返回父对象

  12. 12

    计数父JSON对象中的对象

  13. 13

    通过解析JSON对象返回父对象

  14. 14

    c#newtonsoft json.net在对象内填充json对象导致空值

  15. 15

    JSON.NET:如何根据父(所有者)对象值反序列化接口属性?

  16. 16

    JSON.NET:如何根据父(所有者)对象值反序列化接口属性?

  17. 17

    JSON.NET:如何根据父(所有者)对象值反序列化接口属性?

  18. 18

    使用Json.Net C#获取json对象中的值和键

  19. 19

    如何在C#中使用Json.NET从JSON访问嵌套对象

  20. 20

    使用Json.NET(C#)从JSON作为字符串读取子对象

  21. 21

    使用Json.Net C#获取json对象中的值和键

  22. 22

    使用JSON.NET将C#对象转换为JSON时,多余的'\'是逗号

  23. 23

    如何使用JSON.Net从C#中的JSON对象创建数组

  24. 24

    如何在C#中使用JSON.Net查询和枚举复杂的JSON对象

  25. 25

    json.net在C#中反序列化json对象

  26. 26

    如何使用JSON.net从c#中的JSON文件中获取密钥及其对象?

  27. 27

    C# 使用 newtonsoft json.net 将 json 数组转换为对象列表

  28. 28

    在C#JSON.NET中解析字符串或对象到对象

  29. 29

    在C#JSON.NET中将字符串或对象解析为对象

热门标签

归档