【发布时间】:2021-03-21 23:27:58
【问题描述】:
我的实现返回一个字符串,其中 json 属性名字符串被转义。这与 json 格式不匹配,会带来一些问题。有没有办法使用 JsonSerializer,或者我必须像 Microsoft 文档中建议的那样手动构建属性的输出属性。
所以我的序列化似乎可以工作,但将其放入正确的 json 格式似乎失败了。
public override void Write(Utf8JsonWriter writer, IMyInterface value, JsonSerializerOptions options)
{
switch (value)
{
case Implementation1 i1:
writer.WriteStringValue(JsonSerializer.Serialize(i1, options));
return;
case Implementation2 i2:
writer.WriteStringValue(JsonSerializer.Serialize(i2, options));
return;
case Implementation3 i3:
writer.WriteStringValue(JsonSerializer.Serialize(i3, options));
break;
}
}
这是结果的一部分,例如:["{\"propertyName\":null,...
更新:
我像建议的那样更新了 JsonSerializer 选项,因此它不会在我的 Startup.cs 中的 ConfigureServices 中像这样编码,这似乎无法解决问题。
services.AddMvc().AddJsonOptions(opts =>
{
opts.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
});
【问题讨论】:
-
你为什么要构建转义的 JSON?
-
@mason 这就是问题所在,我不想将它转义,我想要它的属性 json 格式。
-
@RoarS.It 似乎匹配,但我没有更改输出。我将更新如何将它集成到我的代码中。
标签: c# .net asp.net-core .net-core