自定义Json序列化

本文关键字:序列化 Json 自定义 | 更新日期: 2023-09-27 18:24:47

我有一个使用JavaScriptSerializer在Json对象中序列化的KeyPairValue列表。这个操作的输出给了我这样的东西:

[{"Key":"A","Value":"ValueA"},{"Key":"D","Value":"ValueD"}]

我想去掉房产名称周围的",这样它就可以看起来像这样:

[{ Key:"A", Value:"ValueA"},{ Key:"D", Value:"ValueD"}]

有没有办法实现这一点,或者我想要的不是Json系列化?

自定义Json序列化

您可以使用Json.Net 实现

StringWriter str = new StringWriter();
JsonTextWriter writer = new JsonTextWriter(str);
writer.QuoteName = false; //<-- This is the trick
JsonSerializer jsonSer = new JsonSerializer();
jsonSer.Serialize(writer, new { ID = 1, Name = "Jack" });
string jsonstr = str.ToString();

输出为{ID:1,Name:"Jack"}

正如我所知,JSON必须将密钥嵌入"中。这是因为JSON实际上是JavaScript对象的传输格式,因此它有一些细节。

RFC指定名称是字符串,还指定字符串必须用引号括起来。

RFC 4627

值得注意的是,值可以是不同的类型,其中一些类型不必用引号括起来。你也可以在规范中找到这个。