如何使用 JSON.NET 序列化 static 或 const 成员变量?

2024-04-03

我无法在任何地方找到这个问题的答案,但是当我尝试使用 static 或 const 成员变量序列化结构或类时,默认情况下它们不会序列化。如果我尝试通过设置强制序列化MemberSerialization.OptIn,我收到错误。

ex.

[JsonObject(MemberSerialization.OptIn)]
public class Test
{    
    [JsonProperty]
    public int x = 1;

    [JsonProperty]
    public static int y = 2;
}

如果我尝试使用以下命令序列化此类:

Test t = new Test();
string s = JsonConvert.SerializeObject( t );

我收到错误Error getting value from 'y' on 'Test'。如果 y 是 const,也会发生同样的情况。

我的理论是,静态和常量值存储在内存中的特殊位置,并且由于某种原因,Json 序列化程序在尝试访问它们时失败。但这完全是一种预感,我在其中看不到任何东西静态 C# 参考 http://msdn.microsoft.com/en-us/library/vstudio/98f28cdx%28v=vs.110%29.aspx这有什么帮助。我对 C# 比较陌生——目前这确实是一个好奇的问题。


如果愿意的话,它当然可以序列化静态变量。序列化是通过使用 Reflection API 检查对象和类型来完成的,这些 API 允许您执行“任何操作”——没有技术原因导致这些值无法序列化。

然而,默认情况下不支持这一点有一个合乎逻辑的理由:它没有多大意义。您正在序列化一个instance, and static or const成员在逻辑上不是实例的一部分,而是整个类的一部分。

也就是说,您仍然可以序列化static成员(如果是财产):

[JsonProperty]
public static int y { get; set; } // this will be serialized

当然,您可以通过创建自定义来完全覆盖序列化器的行为JsonConverter.

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

如何使用 JSON.NET 序列化 static 或 const 成员变量? 的相关文章

  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • 当我尝试使用 AVX 功能时,Clang 生成错误

    我使用的是 Windows 10 使用 Clang 版本 5 最近安装 当我编译以下内容时 define AVX define AVX2 include
  • 未定义异常变量时通过引用捕获

    捕获异常时 标准指导是按值抛出 按引用捕获 据我了解 这有两个原因 如果由于内存不足异常而引发异常 我们将不会调用可能终止程序的复制构造函数 如果异常是继承层次结构的一部分 我们可能会对异常进行对象切片 如果我们有一个场景 我们没有在 ca
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0
  • 在 C++ 中处理音频缓冲区时,如何执行从 float -> double -> float 的转换

    我目前正在开发一个应用程序 其中音频样本帧在以下回调中进行处理 void Eav07AudioProcessor processBlock AudioSampleBuffer buffer for int channel 0 channel
  • 基于 C++ 范围的 for 循环

    尝试使用基于范围的 for 循环执行某些操作 可以使用常规的 for 循环来完成 如下所示 vector
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • .NET 的 HttpWebResponse 是否会自动解压缩 GZiped 和 Deflated 响应?

    我正在尝试执行一个接受压缩响应的请求 var request HttpWebRequest HttpWebRequest Create requestUri request Headers Add HttpRequestHeader Acc
  • C# - 命名空间内的类型声明

    在命名空间内而不是在类中声明类型的可能用途是什么 For ex namespace Test public delegate void Ispossible 这是有效的并且不会产生任何编译错误 但我无法想象为什么我们会以这种方式声明它而不是
  • 停止 TcpListener 的正确方法

    我目前正在使用 TcpListener 来处理传入连接 每个连接都有一个线程用于处理通信 然后关闭该单个连接 代码如下 TcpListener listener new TcpListener IPAddress Any Port Syst
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • 检索 Autofac 容器以解析服务

    在 C WindowForms 应用程序中 我启动一个 OWIN WebApp 它创建另一个类 Erp 的单例实例 public partial class Engine Form const string url http 8080 49
  • 向每个收件人发送一封包含不同内容的电子邮件(使用抄送字段)

    在你因为这个问题 毫无意义 和 不可能 而驳回之前 请听我说完 问题 我们在使用我们的系统发送的每封电子邮件中实施跟踪像素 即具有唯一 URL 的可下载 GIF 文件 这有助于我们跟踪电子邮件的打开情况 问题是 当我们抄送一些收件人时 跟踪
  • 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

    我有一个继承自基类模板的类模板 基类模板有一个数据成员和一个成员函数模板 我想从我的超类中调用它 我知道为了消除对成员函数模板的调用的歧义 我必须使用template关键字 我必须明确引用this在超级班里 this gt base mem
  • C 中的静态和动态绑定(严格来说是 C,而不是 C++)是什么?

    我最初对发布这个问题感到担忧 以免它重复 但即使在谷歌搜索了许多关键字之后 我在 StackOverflow 上找不到任何解释 C 的静态和动态绑定的链接 尽管有 C 的问题和答案 但是都涉及classes以及显然不适合 C 的东西 Sta
  • Crypto++ 和压缩 EC 密钥

    如何在 Crypto 中生成压缩的 ECDSA 密钥 AutoSeededRandomPool prng ECDSA
  • 编译器什么时候内联函数?

    在 C 中 函数仅在显式声明时才内联inline 或在头文件中定义 或者编译器是否允许内联函数 因为他们认为合适 The inline关键字实际上只是告诉链接器 或告诉编译器告诉链接器 同一函数的多个相同定义不是错误 如果您想在标头中定义函
  • 计算两个日期之间的工作日数?

    在C 中 如何计算business 或工作日 两个日期之间的天数 我以前曾经遇到过这样的任务 并且我已经找到了解决方案 当可以避免的时候 我会避免列举其间的所有日子 这里就是这种情况 正如我在上面的一个答案中看到的那样 我什至没有提到创建一
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n

随机推荐

  • 类常量

    我有几个 obj c 类 每个类都需要一些在 switch 语句中使用的常量 我曾尝试使用以下命令在 m 文件中定义这些数字常量 define预处理器指令 所有这些常量都以 kCell 开头 这似乎工作得很好 但 Xcode 的代码感知向我
  • 是否可以设置 git merge 来自动解析? (git 雷雷雷)

    我有 2 台笔记本电脑 其中有一个纯文本文件 该文件必须同步 它用作第三方软件的数据库 客户希望每天同步该文件的内容 第一个想法是制作一个将文件上传到 Dropbox 的脚本 但如果发生冲突 两个用户删除 A 行 第一个用户添加 B 行 第
  • 如何使用slf4j和java.util.logging登录tomcat

    我创建了一个在 Tomcat 8 上运行的 Web 应用程序 一如既往 我想使用 slf4j 在本例中 由 java util logging 支持 因为它是 Tomcat 的默认设置 相关依赖是这样的
  • 返回对 C++ 中静态局部变量的引用

    这个问题只是为了我更好地理解C 中的静态变量 我认为如果将 C 中的局部变量声明为静态 我可以返回对它的引用 因为该变量应该在函数返回后继续存在 为什么这不起作用 include
  • 如何解决Admob执行异常?

    我一直在尝试在我的全新应用程序中实施 Google Admob 广告 我已经处理错误代码 0 内部错误 和 广告 错误等待未来 异常几个小时了 从今天早上起 我就有了一个带有付款方式的 Admob 帐户 我一直在使用我的凭据关注 Googl
  • Tectonicus 2.25 的 XML 文件错误

    我正在尝试为我的单人游戏世界制作一张 Tectonicus 地图 因此我需要一个 XML 配置文件 但是当尝试制作地图时 我在终端 MAC OSX 中收到此错误 Parsing config from Users ralphvandenhe
  • 我无法找到 libftdi 的 mpsse (SPI) 模式的示例代码

    这不是一个家庭作业问题 尽管这是一个工作问题 几个月前 我刚写完一份规范 老板就会把它外包出去 因为资金紧张 所以我正在尝试自己做这件事 我是一个很弱的 C 编码员 如果 gcc 能输出一些运行时不会出现段错误的东西 或者有时根本没有任何东
  • 从 Spring MVC @RestController 返回视图

    As RestController是组成 Controller and ResponseBody 我相信如果我希望我的控制器同时工作 MVC 和 REST 控制器只需注释 RestController应该没事 那是对的吗 As RestCo
  • 从 App Store 中删除应用程序

    我按照以下步骤从 App Store 中删除了我的应用程序 但我没有看到任何 删除 选项 http msdn microsoft com en us library windows apps jj193601 aspx http msdn
  • 尝试创建一个脚本,如果提交者回答错误,该脚本会在表单提交时向提交者发送电子邮件

    我正在查看表单提交 如果提交者填写了任何错误的问题 则向提交者发送电子邮件 但脚本也会向所有输入正确的提交者发送电子邮件 我知道 if 脚本可以处理数字 就像我在另一个项目中使用它一样 但是当我将问题更改为 true false 时 它 似
  • 我应该使用哪个命名空间和程序集来声明共享项目中的转换器

    我应该使用哪个命名空间和程序集在 Xamarin 中的共享项目中声明转换器 对于该资源
  • 如何使用 Struts 预防 XSS 漏洞

    我们需要在 Struts 应用程序中添加反 XSS 支持 最具体地说 架构师要求所有用户输入在存储到数据库之前必须进行 清理 由于我不想重新发明方轮 我可以使用哪个 Java 库来实现此目的 以及把它放在哪里 理想情况下 它应该是可配置的
  • 在 docker 容器中使用 uwsgi 和 nginx 设置 Flask 应用程序

    我正在尝试在 Docker 容器中运行带有 Flask uwsgi 和 nginx 的 Docker 容器 我的 Dockerfile 看起来是这样的 FROM ubuntu 16 04 MAINTAINER Dockerfiles Ins
  • 如何更新推送通知的配置文件 - IOS

    我们正在开发一个IOS应用程序 我们想要实现推送通知 我已经浏览了苹果文档 并要求我的团队代理在iOS开发中心启用推送通知 他们似乎做到了 现在已经启用了 我已经在我的应用程序中注册了推送通知 如下所示 UIApplication shar
  • 寻找有关在 Windows 7 上安装应用程序的“正确”方法的文档

    我正在使用一些遗留应用程序 10 15 年 并试图找到有关在 Windows 7 上安装和运行它们 以及任何用户应用程序 的 正确 方法的指导 而无需完全的管理员权限 换句话说 可执行文件 只读文件应存放在何处 用户数据 读写文件应存放在何
  • Linux Entity Framework Core 上的 SQL Server 连接字符串无效

    我使用的是Linux 更具体地说是Xubuntu 我已在我的计算机上安装了 SQL Server Express 我目前正在制作一个网络应用程序 但我的连接似乎无法正常工作 或者我不太理解所有内容 我得到的输出是 A network rel
  • 在 Java 中使用一组固定字母将 long 编码/解码为字符串

    给定一组任意字母 String range 0123456789abcdefghijklmnopABCD 我正在寻找两种从长 字符串进行编码 解码的方法 String s encode range l and long l decode r
  • 在 Python 中读取和解释二进制文件中的数据

    我想逐字节读取文件并检查每个字节的最后一位是否已设置 usr bin python def main fh open tmp test txt rb try byte fh read 1 while byte if int byte 16
  • 如何有效地将左值或右值绑定到同一引用?

    假设您有一个 C 函数 它使用 const 参数的更改版本 MyObject alter obj MyObject const obj Creates new altered object void func MyObject const
  • 如何使用 JSON.NET 序列化 static 或 const 成员变量?

    我无法在任何地方找到这个问题的答案 但是当我尝试使用 static 或 const 成员变量序列化结构或类时 默认情况下它们不会序列化 如果我尝试通过设置强制序列化MemberSerialization OptIn 我收到错误 ex Jso