Isi*_*tar 4 .net c# json.net c#-9.0
使用 C# 9 中的新 C# 记录类型,我想知道是否可以(用于序列化)JsonPropertyAttribute在构造函数参数上设置from Newtonsoft.Json。它似乎不是开箱即用的。
MWE:
using System;
using Newtonsoft.Json;
Console.WriteLine(JsonConvert.SerializeObject(new Something("something")));
record Something([JsonProperty("hello")] string world) {}
Run Code Online (Sandbox Code Playgroud)
输出:
{"world":"something"}
Run Code Online (Sandbox Code Playgroud)
预期输出:
{"hello":"something"}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以让它像这样工作?还是我们必须使用真正的构造函数恢复到属性样式?
internal record Something
{
public Something(string world) { World = world; }
[JsonProperty("hello")] public string World { get; }
}
Run Code Online (Sandbox Code Playgroud)
Jer*_*ert 17
根据文档:
通过使用语法上应用于相应记录参数的属性
property:或field:目标,可以将属性应用于合成的自动属性及其支持字段。
所以你要
record Something([property:JsonProperty("hello")] string world) {}
Run Code Online (Sandbox Code Playgroud)
如果没有property:限定符,属性最终会出现在生成的构造函数的参数上(这在其他场景中很有用,比如可空性)。
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |