使用 Json.Net 更改输出中的 json 属性名称 [重复]

2023-12-12

我正在尝试读取 JSON 文件,重命名属性名称,并使用新名称导出新的 JSON。如本例所述,https://www.newtonsoft.com/json/help/html/JsonPropertyName.htm,我们可以使用 JsonProperty 在代码内部指定不同的名称。但是,当您导出 json 时,它会返回原始名称。因此,在示例中,当它记录在控制台中时,它仍然返回“release_date”而不是“ReleaseDate”。有没有办法在不创建全新对象的情况下做到这一点?

为了澄清事情,这是我正在尝试做的事情的示例:

JSON 输入:

{ "name": "Starcraft", "release_date": "1998-01-01T00:00:00" }

用于反序列化数据的对象:

public class Videogame
{
    public string name{ get; set; }

    [JsonProperty("release_date")]
    public DateTime releaseDate { get; set; }
}

称为的代码:

var json = JsonConvert.DeserializeObject<Videogame>(File.ReadAllText(path))
Console.WriteLine(JsonConvert.SerializeObject(json));

结果输出:

{ "name": "Starcraft", "release_date": "1998-01-01T00:00:00" }

期望的输出:

{ "name": "Starcraft", "releaseDate": "1998-01-01T00:00:00" }

我目前知道如何解决这个问题的唯一方法是创建一个新对象并使用它来序列化我的输出。不确定是否有更简单的方法可以做到这一点。


以下将起作用:

public class Videogame
{
    public string name{ get; set; }

    [JsonProperty("release_date")]
    public DateTime old 
    { 
          set { ReleaseDate = value; }
    }

    [JsonProperty("releaseDate")]
    public DateTime ReleaseDate { get; set; }
}

反序列化时,旧属性会将其值重定向到新属性。

由于旧属性只是一个 setter,因此不会被序列化回来。

我不会考虑使用这种方法进行大量重命名。那么最好遵循评论中给出的建议。

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

使用 Json.Net 更改输出中的 json 属性名称 [重复] 的相关文章

随机推荐

  • 使用 Python 数值求解 ODE

    我正在使用 Python 数值求解谐振子的 ODE 当我添加驱动力时 它没有任何区别 所以我猜测代码有问题 任何人都可以看到问题吗 这 h m f0 np cos wd i 部分是动力 import numpy as np import m
  • Visual Studio Express 版本的 Wix 项目模板?

    是否可以在 Express 版本中使用 Wix 我对 2010 2012 版本感兴趣 我知道我可以从命令行使用蜡烛和光 但我对与 IDE 集成感兴趣 VS 的 Express 版本不允许使用必要的插件来扩展 VS 所以你必须继续使用命令行
  • 为什么淡入淡出过渡不适用于共享元素

    我有 2 个 Activity 共享元素转换工作正常 变化范围是唯一应用的过渡 我想在共享元素移动时应用淡入淡出过渡 因此排序为 ORDERING TOGETHER public class TransitionUtils public s
  • 如何使用 Dropwizard 测试 HMAC 身份验证?

    我刚刚开始使用 Dropwizard 0 4 0 我需要一些有关 HMAC 身份验证的帮助 有人有什么建议吗 先感谢您 目前 Dropwizard 不支持开箱即用的 HMAC 身份验证 因此您必须编写自己的身份验证器 HMAC 身份验证的典
  • 使用 jQuery noconflict 与两个版本的 jQuery

    问题是 如果你想在页面上使用 otherLibrary 必须是 otherLibrary 的 而不是 jQuery 的 由于 无论如何只是 jQuery 的别名 因此 jQuery 提供了 noConflict 函数作为告诉 jQuery
  • 字符串过滤器:检测非 ASCII 符号

    我正在创建一个应用程序 它将输入字符串发送到移动设备 有些设备在编码特殊字符方面存在问题 因此我想创建一个过滤器 不允许 PC 上的用户输入特殊字符 该应用程序是用 C NET 3 5 编写的 我想将一个方法附加到按键事件 伪代码如下 pr
  • MySQL my.cnf 文件 - 找到没有前面组的选项

    我正在尝试远程连接到 Ubuntu 中的数据库 但在尝试时收到错误消息mysql u root p 在配置文件中找到没有前面组的选项 etc mysql my cnf 第 1 行 my cnf 看起来像 mysqld user mysql
  • 我的 Recyclerview 没有显示任何内容

    我想将 mysql 数据库中的项目显示到我的 recyclerview 但我不知道为什么它不显示任何内容 回收者视图
  • java.library.path 中没有 swt-mozilla-gtk-4332

    有关新信息 请参阅底部的更新 我有一个包含集成浏览器的 Java SWT 应用程序 在 Windows 和 CENTOS 6 5 上一切正常 我被要求让该应用程序在安装了 CENTOS 7 的新计算机上运行 我不断收到 no swt moz
  • 导入多个文件并提取 r 中的特定列

    我有 20 个数据文件 txt 我的最终目标是从每 20 个文件中选择一个特定列 比方说 V3 并创建一个新文件 我试过 temp lt list files pattern snp blp 我如何从每 20 个文件中提取 V3 并在 r
  • 从 WPF RichTextBox 获取 FontWeight/FontStyle/TextDecorations

    如何检测 WPF RichTextBox 中光标位置的当前文本格式 该帖子的作者还询问了有关 TextDecorations 的问题 您没有提供示例代码及其使用方法的不同 我将其发布为进一步的解决方案 var obj myText GetP
  • Python Pandas:转置还是堆栈?

    您好 我下面有一个示例数据框 我无法通过转置获得所需的结果 x P P O DNP D y O O D DNP DNP z P P O U DNP a O O D DNP DNP b P DNP O U DNP ID ID1 ID2 ID3
  • C# 中的 DateTime 和 SQL Server 中的 DateTime 有什么区别吗?

    C 中的 DateTime 和 SQL Server 中的 DateTime 有什么区别吗 精度和范围 所以 一切都很重要 p 来自 MSDN NET 系统日期时间 DateTime 值类型表示日期和时间 其值范围为公元 0001 年 1
  • Vis.js 网络节点定制:卡片作为节点

    我想建立一个网络 其中节点表示结构类似于卡片的信息 对于卡片 我指的是由两个区域组成的结构 多行文本区域 我可以在其中放置来自不同资源的信息 例如姓名 电话号码 地址和 控制区域 我可以在其中有 2 3 个按钮 最好带有图标 来最大化节点
  • 将自定义对象的数组列表传递给另一个活动

    单击单元格时 对象将添加到数组中 该数组需要传递到另一个活动中 出于测试目的 我传递了只有一个对象 DoctorObject 的数组 然后在下一个活动中 我使用 getName 将名称作为字符串获取 并将其显示在 toast 中 然而吐司是
  • 将链接数据帧与其他数据帧一起使用的更快方法 - Python

    我有两个与下面类似的数据框 import pandas as pd num1 1111 2222 3333 4444 5555 6666 7777 8888 9999 num2 A1 A2 A3 A4 A5 linkage pd DataF
  • 在Python中,有没有一种简洁的方法来比较两个文本文件的内容是否相同?

    我不在乎有什么差异 我只是想知道内容是否不同 低级方式 from future import with statement with open filename1 as f1 with open filename2 as f2 if f1
  • 如何上传公共文件夹中的图像并在 Angularjs MEAN STACK 中检索它

    我正在使用 angularjs 我正在尝试执行上传图像操作 但我无法将图像存储在本地路径中 并且我想将图像路径存储到我的数据库中 而且我正在使用 mongodb 上传图像操作 但我无法存储图像并从本地路径中检索 任何人都可以帮助如何执行此功
  • PHP 检查数组是否包含字符串开头

    我如何检查是否start给定值的匹配预定义值列表中的条目 model no1 KK71458 model no2 IX41 models array KK61 KK71 KK81 IX IJ 在上面的示例代码中 两个值都应返回有效的匹配项
  • 使用 Json.Net 更改输出中的 json 属性名称 [重复]

    这个问题在这里已经有答案了 我正在尝试读取 JSON 文件 重命名属性名称 并使用新名称导出新的 JSON 如本例所述 https www newtonsoft com json help html JsonPropertyName htm