我希望对象属性的序列化输出为字符串,即使它们是 int 属性或 bool 属性。
using System;
using System.Text.Json;
public class Program
{
public static void Main()
{
var myObj = new MyObj();
var result = JsonSerializer.Serialize(myObj);
Console.WriteLine(result);
}
}
public class MyObj
{
public MyObj()
{
Version = 10;
}
public int Version {get;set;}
}
以上输出
{“版本”:10}
我想要它输出
{“版本”:“10”}
将
Version
中的 MyObj
类型更改为 int
会创建异常
在将
Version
更改为字符串并将数字保存为字符串(例如 Version = "10";
)之前,这可以通过序列化过程实现吗?
这可以通过创建自定义转换器来实现
public class StringJsonConverter<T> : JsonConverter<T>
{
public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
throw new NotImplementedException("Deserialization is not implemented.");
}
public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
{
writer.WriteStringValue(value?.ToString());
}
}
将新的转换器添加为属性上的属性
[JsonConverter(typeof(StringJsonConverter<int>))]
public int Version { get; set; }