我想将一个C#对象序列化(和反序列化)为一个json字符串。通常,当对象被序列化时,对象被包含在生成的json中的一对{}
中。但这里我感兴趣的是对象只被序列化为一个字符串。
我有兴趣这样做来封装关于ItemNumber
应该如何格式化的逻辑。但是我没有兴趣公开我正在使用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对象。
如何实现我正在寻找的序列化逻辑?
3条答案
按热度按时间waxmsbnn1#
the System.Text.Json documentation中解释了如何执行此操作的答案。实现一个自定义转换器并在序列化期间使用它。
注意:在您的示例中,不可能从
ItemNumber
中提取值,我实现了ToString
方法。控制台输出
u0sqgete2#
如果向类中添加一些属性,则不需要任何自定义序列化程序
bpzcxfmw3#
我不知道你为什么不这么做?
如果您要允许对象的值可以为Null,请加入
?
。第一个
然后...
编辑:强烈建议使用Newtonsoft。