如何在自定义 JsonConverter 中使用默认序列化

2023-12-02

我有一个复杂的对象图,我正在使用 Json.NET 对其进行序列化/反序列化。一些对象派生自抽象类,因此为了使反序列化正常工作,我需要创建一个自定义JsonConverter。它的唯一作用是在反序列化时选择抽象类的适当具体实现,并允许 Json.NET 继续其方式。

当我想序列化时,我的问题就出现了。我根本不需要做任何定制的事情。我想要获得与使用完全相同的行为JsonConvert.SerializeObject没有定制JsonConverter.

但是,由于我使用自定义 JsonConverter 类来满足我的反序列化需求,因此我被迫提供一个WriteJson执行。由于 WriteJson 是抽象的,我不能只调用base.WriteJson,但我基本上想做到这一点。所以我的问题是,我应该在该方法中放入什么来获得简单的默认行为?换句话说:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    // What goes here to get default processing?
}

按照您的习惯JsonConverter, 覆盖CanWrite并返回 false:

public override bool CanWrite { get { return false; } }

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    throw new NotImplementedException();
}

然后你可以抛出一个异常WriteJson,因为它不会被调用。

(同样,要在de序列化、覆盖CanRead并返回false.)

请注意,相同的方法可用于JsonConverter<T>(引入于Json.NET 11.0.1)因为它只是一个子类JsonConverter引入了类型安全版本ReadJson() and WriteJson().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在自定义 JsonConverter 中使用默认序列化 的相关文章

  • 使用 System.Text.Json 序列化记录成员

    我在记录中使用自我引用成员 如下所示 type Payload Id Guid member x DerivedProperty Derived Property using id x Id NewtonSoft Json会序列化这个 但是
  • 对嵌套结构使用自定义解组时,GoLang 结构无法正确解组

    我们需要对嵌套在多个其他结构中的结构使用自定义解组器 而这些结构不需要自定义解组器 我们有很多类似的结构B下面定义的结构 类似于嵌套A 代码的输出是true false 0 预期的true false 2 有任何想法吗 Go 游乐场示例he
  • 检索 Steam 市场上物品的价格历史记录

    关于 Steam 市场上的物品 我想知道是否有办法检索某物品在一段时间内的价格历史记录 我知道 Steam 为想要将市场特定数据集成到自己网站中的开发人员提供了一个特殊的 api 但我还没有找到任何有关以 json 形式检索商品价格历史记录
  • 解码Json数据数组并插入到mysql

    这个问题可能已经在这里问过 但我尝试搜索找不到它 我有如下 Json 数据 CityInfo CityCode 5599 Name DRUSKININKAI CityCode 2003 Name KAUNAS CityCode 2573 N
  • PySpark - RDD 到 JSON

    我有一个 Hive 查询返回以下格式的数据 ip category score 1 2 3 4 X 5 10 10 10 10 A 2 1 2 3 4 Y 2 12 12 12 12 G 10 1 2 3 4 Z 9 10 10 10 10
  • 如何将 JSON 文本转换为 PHP 关联数组

    我将以下 JSON 对象存储在文本文件 data txt 中 player black time 0 from 2c to 3d 我使用 php 阅读 问题 有没有简单的方法可以转换 data到 PHP 关联数组 我尝试过使用json de
  • JSON(Gson)反序列化为超类对象然后转换为子类对象的最佳方法是什么

    我目前正在研究在Android上使用Gson for Json 刚刚遇到这个问题 假设我们有如下类 class Command public int id COMMAND ID UNSPECIFIED class CommandSpecif
  • 使用 JSON 解析问题警告

    我正在尝试从网站读取 JSON 数据 我在 Windows 10 上使用 Dev C 和 mingw 编译器 这是我尝试在静态项目中运行的教程中的 JSON 解析器 define CURL STATICLIB include
  • Oracle/PHP - ORA-00911 更新时的无效字符

    我正在运行一个 PHP 脚本 该脚本从 Oracle 数据库实例更新表 首先 我收到一个 JSON 对象 lot KLMHA17N9N00 requestor B10078 id FRESHLOT username B26696 passw
  • Elasticsearch GET API 获取分片大小

    在 Elasticsearch 2 3 3 中 有没有办法使用返回 JSON 的 GET API 获取分片大小 目前我找到了以下几种获取shard size的方法 这两种方法都存在问题 recovery gt 使用 JSON 进行响应并提供
  • 将新属性动态添加到 Node 中现有的 JSON 数组中

    我需要添加当前 JSON 中不存在的属性 json 对象如下所示 var jsonObj result OK data 我想在 数据 中添加温度 我可以像下面那样做 jsonObj data push temperature 然后 我想在
  • 如何按单个整数字段对 JSON 进行排序? [复制]

    这个问题在这里已经有答案了 我有以下 JSON title title order 0 order 9 order 2 JSON 包含很多字段 我如何根据字段对它们进行排序order field 我一直在寻找 Nodejs 中内置的东西 但
  • 在哪里可以访问 Gdx.files.local()?

    我有一个预制的 json 文件 我想测试一下 这个 Json 文件将被修改 所以我想读 写 我注意到内部是只读的 所以我想将我的 Json 文件保存在本地存储中 通过 eclipse 或操作系统 windows 8 手动 以便我可以通过 f
  • 循环遍历 JSON 数组

    我最近发布了另一个问题 用户立即为我指明了正确的方向 ajax type POST url data token token re 8 cache false timeout 5000 success function html auth
  • 如何使用 jq 和 Bash 将 JSON 展平为 Key=Selector 的 Bash 关联数组?

    作为后续展平任意 JSON https stackoverflow com questions 42299905 using jq flatten arbitrary json to delimiter separated flat dic
  • json_decode 到自定义类

    是否可以将 json 字符串解码为 stdClass 以外的对象 不是自动的 但你可以按照老式的路线来做 data json decode json true class new Whatever foreach data as key g
  • 如何动态删除嵌套的json键?

    这是示例 json search facets author language value nep count 3 value urd count 1 source value West Bengal State Council of Vo
  • Golang 结构的 XML 和 JSON 标签?

    我有一个可以根据 HTTP 请求标头输出为 JSON 或 XML 的应用程序 我可以通过将正确的标签添加到我正在使用的结构中来实现正确的输出 但我不知道如何为 JSON 和 XML 指定标签 例如 序列化以纠正 XML type Foo s
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • 从json中获取所有子节点

    我有以下 json var source k 01 k 02 children k 05 k 06 children k ABC k PQR k 07 k 03 我希望能够指定 k 的值并取回所有孩子 以及孙

随机推荐

  • Mysql 递归存储过程...达到限制 0...无法更改 max_sp_recursion_depth 变量

    更新 好的 我能够调试这个并发现通过这样做select max sp recursion depth我可以看到该变量设置为 15 但是 当我使用以下命令运行回调时CALL single limb portfolio list xaccoun
  • Neo4J 在 Cypher 中创建临时变量

    所以我的顶级问题是我试图返回是否MERGE导致是否创建新节点 为了做到这一点 我想我可以创建一个简单的临时布尔值 将其设置为 TRUE 使用ON CREATE 我想象它是如何工作的 MERGE Person id Tom Jones WIT
  • 如何在WP8列表框内绑定数据用户控件

    我有一个用户控件 它有一个TextBlock 我想在其中绑定文本
  • 可以同时运行两个无限循环吗?

    我希望能够拥有两个while True循环同时运行 这可能吗 我对Python非常陌生 所以我不知道如何解决这个问题 这是我制作的代码 import time def infiniteLoop while True print Loop 1
  • 使用 NavigationView 进行交叉导航

    我有以下结构 enum Page case chapter1 case chapter2 struct ContentView View State var page Page nil var body some View Navigati
  • 安装 WIF 运行时以在 Windows Azure 中托管 .NET 应用程序

    我开发了一个自定义应用程序 它能够使用 CRM Web 服务并从自定义 NET 页面在 CRM 中执行 Windows Live Id 身份验证 创建 读取和更新操作 当我在 Visual Studio 2010 中调试应用程序时 它运行得
  • jQuery UI 多个可排序列:滚动问题

    jQuery 1 9 1 jQuery 用户界面 1 10 1 请看小提琴 td class my column div class my div class p class para item para 101 p div td td d
  • 操作系统升级后,我的 ANT 版本无法正常工作

    我最近将系统从 Mint12 升级到 Mint14 并且在让旧项目在新系统上正常运行方面遇到了严重问题 总结一下 让 Mint14 正常工作并安装了我所有必需的软件 Eclipse ANT 等 从备份磁盘恢复我的文件 将 Oracle JD
  • Facebook iPhone 应用程序支持哪些自定义 URL 方案?

    Note 这些 URL 可能不可用 Facebook 已更新多次 但并未正式支持其中任何一个 Note 我正在尝试查看有关 iPhone 上的 Facebook 应用程序的可用信息 到目前为止 我发现了几个包含有限信息的网站 并且我能够弄清
  • C++ DLL 插件接口

    我打算做一个 C 插件接口 ala如何从 dll 创建某个类 dll 中的构造函数 但有人担心 如果使用该接口通过 MinGW 或 Borland 创建 DLL 并且 DLL 加载器是用 MSVC 编译的 可能会出现问题 由于唯一的导出函数
  • 复制句柄类的 MATLAB 对象

    我在 MATLAB 中实现了一个句柄类 并尝试通过调用以下两个函数来复制该类的对象 objByteArray getByteStreamFromArray obj newObj getArrayFromByteStream objByteA
  • 3D 中的 Numpy 网格

    Numpy 的网格网格对于将两个向量转换为坐标网格非常有用 将其扩展到三维空间的最简单方法是什么 因此 给定三个向量 x y 和 z 构造可用作坐标的 3x3D 数组 而不是 2x2D 数组 Numpy 我认为从 1 8 开始 现在支持高于
  • 找到噪声图像边缘的最佳方法

    我有一个噪声图像 如下图所示 假设它是高斯噪声 目前 我使用两个步骤来寻找边缘 使用高斯滤波器 G 平滑图像 根据方程找到边缘 g 1 1 I G 2 其中 G 是高斯滤波器 是控制噪声水平的权重 然而 高斯滤波器是图像边缘丢失的原因 我想
  • 带参数的 Prolog DCG

    我不知道如何使用参数来处理 DCG 假设我们想用 DCG 来代表父母和他们的孩子 那么我们可以说 father gt Peter mother gt Isabel child gt Guido child gt Claudia verb g
  • 从 JTextPane 中的任何偏移量获取样式

    有没有办法得到Style 样式名称或者只是比较是否Style在某个位置JTextPane与我在插入时给文本的样式 因为为了我的目的 我创建了自定义JTextPane StyledDocument and DocumentFilter 所以我
  • 将输入字符串转换为 float/double C++

    所以我知道如何在 C 中执行此操作 但不知道如何在 C 中执行此操作 我正在尝试将给定用户输入解析为双精度 以便稍后进行数学运算 但我是 C 新手 并且遇到了麻烦 帮助 C public static class parse public
  • gmail api 给出 failedPrecondition 错误

    我无法让 gmail api 工作 我正在使用 JWT 进行服务器到服务器身份验证 google api python client 1 4 0 httplib2 0 9 oauth2client 1 4 7 pycrypto 2 6 1
  • 如何设置“discrete_distribution”向量 C++

    我正在尝试模拟马尔可夫链之类的东西 并使用discrete distribution来模拟状态s i到s j的变化 但当然 这是一个矩阵 而不是向量 所以我尝试一下 std vector
  • gcc,内联汇编 - Pushad/popad 丢失?

    有什么方法可以避免复制粘贴pushad popad指令体到我的代码中 因为 gcc 当前标志 Wall m32 抱怨说 asm pushad 错误 没有这样的指令 pushad asm popad 错误 没有这样的指令 popad GCC
  • 如何在自定义 JsonConverter 中使用默认序列化

    我有一个复杂的对象图 我正在使用 Json NET 对其进行序列化 反序列化 一些对象派生自抽象类 因此为了使反序列化正常工作 我需要创建一个自定义JsonConverter 它的唯一作用是在反序列化时选择抽象类的适当具体实现 并允许 Js