【发布时间】:2021-12-23 23:53:54
【问题描述】:
我在 C# 6 中有一个类,如下所示:
public class Foo {
public string Name { get; set; }
public string OtherStuff { get; set; }
}
OtherStuff 属性是一个已知有效的 JSON 编码字符串。
我正在尝试使用默认的System.Text.Json 序列化程序从 API 方法返回此类。但我希望将OtherStuff 写出字面意思,而不是转义为字符串值。
我尝试过的事情:
- 在
JsonSerializerOptions中寻找可以做到这一点的东西。 - 尝试使用
System.Text.Json.Nodes.JsonNode而不是string。它仍然将值作为字符串发出。 - 尝试编写自定义
JsonConverter,但Write()方法采用Utf8JsonWriter,这似乎没有办法将字符串作为文字值,只能将字符串写成 JSON 字符串。
public class LiteralJsonConverter : 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); // Can't find a method to write a pre-encoded value
}
我想避免将这个字符串从 JSON 解析成一个对象,这样我就可以在 JSON 中重新发送它。这是我数据库中的 JSON 字符串,数据模型对 API 是不透明的。
谁能提出解决方案?
【问题讨论】:
-
旁注:在 Json.Net 中,您可以使用
[JsonProperty(Type = typeof(JRaw)]
标签: c# asp.net .net system.text.json