如何仅序列化为字符串

问题描述 投票:0回答:1

我希望对象属性的序列化输出为字符串,即使它们是 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";
)之前,这可以通过序列化过程实现吗?

c# serialization
1个回答
0
投票

这可以通过创建自定义转换器来实现

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; }
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.