【发布时间】:2022-11-15 23:22:22
【问题描述】:
我想将 C# 对象序列化(和反序列化)为 json 字符串。
通常当对象被序列化时,对象被包含在生成的json中的一对{}中。
但是在这里,我对仅序列化为字符串的对象感兴趣。
我有兴趣这样做来封装有关如何格式化 ItemNumbers 的逻辑。
但我不想公开我正在为 ItemNumber 使用类而不是普通字符串的事实。
这是我正在寻找的一个例子。
类ItemNumber 包含在类Item 中。
public class ItemNumber
{
private string _value;
public ItemNumber(string num)
{
_value = num;
}
}
public class Item
{
public ItemNumber ItemNumber { get; set; }
}
public void Main()
{
var itemNumber = new ItemNumber("ABC-1234");
var item = new Item
{
ItemNumber = itemNumber,
};
var json = System.Text.Json.JsonSerializer.Serialize(item);
}
我希望将 Item 序列化为如下所示的 json:
{
"itemNumber": "ABC-1234" // <- Notice, not an object. Just a string
}
我知道我可能必须实现自定义序列化程序,但该指南发现似乎假设 C# 对象应始终序列化为 json 对象。
如何实现我正在寻找的序列化逻辑?
【问题讨论】:
-
您使用的是哪个 JSON 库,Newtonsoft 还是 System.Text.Json?
-
“ABC-1234”来自哪里,“_value”有什么用?你能发布你到目前为止所做的代码吗?
-
Item类是一个对象,下面是字典。为什么不serializeItem课程会给你想要的结果? -
我正在使用 System.Text。我已经用这些信息编辑了我的问题,并添加了一个我想如何使用该类的示例。
-
使用 Newtonsoft.Json 的代码会简单得多。 Text.Json 几乎所有内容都需要自定义格式化程序,除了“Hello World!”演示。
标签: c# json serialization