Newtonsoft 有没有办法序列化 Json 属性名称?

Pra*_*oon 6 c# api serialization json.net

我有一个如下所示的类,我想对其进行序列化,以便 JSON 键是JsonPropertyName变量的键,但序列化的字符串将变量名称作为 JSON 键。

using System.Text.Json.Serialization
public class TestClass
{
   [JsonPropertyName("tst")]
   public string Test{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

序列化器使用 Newtonsoft.Json

var json = JsonConvert.SerializeObject(new TestClass {Test = "some value"})
Console.writeLine(json)
Run Code Online (Sandbox Code Playgroud)
  • 实际输出:{"Test":"some value"}
  • 预期输出:{"tst":"some value"}

有没有办法以属性名称为键序列化对象 {"tst":"some value"}

小智 14

您必须使用JsonProperty()属性而不是JsonPropertyName()属性。您还必须包含Newtonsoft.Json用于System.Text.Json.NET 的 JSON 库:

using Newtonsoft.Json;
public class TestClass
{
    [JsonProperty(PropertyName ="tst")]
    public string Test{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)