System.Text.json.jsonSerializer.Serialize将返回字符串括在双引号中

cnwbcb6i  于 2023-03-04  发布在  其他
关注(0)|答案(2)|浏览(185)

System.Text.Json.JsonSerializer.Serialize将返回字符串括在双引号中。
我想我可以从返回字符串中删除第一个和最后一个字符,但我想知道这样做的目的是什么。
有什么可以让序列化程序在默认情况下排除它们吗?

string linkCipherString = JsonSerializer.Serialize<byte[]>(linkCipherBytes);
kulphzqa

kulphzqa1#

使用转换器去除引号:

public class StringJsonConverter: JsonConverter<String>
{
    public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => reader.GetString();
    
    public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options) => writer.WriteStringValue(value.Replace("\"", ""));
}

var serializeOptions = new JsonSerializerOptions { Converters = { new StringJsonConverter() } };
JsonSerializer.Serialize(linkCipher, serializeOptions);
pftdvrlh

pftdvrlh2#

JsonSerializer.Serialize<T>(object)将生成如下所示的json字符串:

"{\"Id\":1,\"Name\":\"aaa\"}"

字符串常量是字符串类型,可以写为两种形式,引号和@-引号。这是C#的设计,您不能更改它。您只能删除字符串数据中的双引号,如\"
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/reference-types#the-string-type

相关问题