System.Text.Json.JsonSerializer.Serialize返回空的Json对象“ {}”

Mik*_*keZ 1 c# serialization json .net-core

环境:Visual Studio 2019 16.3.8,.NET 3.0.100,.NET Core 3.0单元测试。

下面对System.Text.Json.JsonSerializer.Serialize的所有3个调用都返回空对象:“ {}”

我一定做错了什么...但是我看不到吗?

public class MyObj
{
    public int myInt;
}

[TestMethod]
public void SerializeTest()
{
    var myObj = new MyObj() { myInt = 99 };
    var txt1 = System.Text.Json.JsonSerializer.Serialize(myObj);
    var txt2 = System.Text.Json.JsonSerializer.Serialize(myObj, typeof(MyObj));
    var txt3 = System.Text.Json.JsonSerializer.Serialize<MyObj>(myObj);
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*les 5

我非常确定序列化程序不适用于字段。因此请改用属性。

public int MyInt { get; set; }
Run Code Online (Sandbox Code Playgroud)

  • 如果是这种情况,那么到底为什么它[没有记录](https://docs.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializer.serialize?view=netcore-3.0 )? (5认同)
  • @stuartd - 它已记录在案。请参阅[如何在 .NET 中序列化和反序列化 JSON:序列化行为](https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to#serialization-behavior) : *默认情况下,所有公共属性都被序列化。您可以指定要排除的属性...目前,字段被排除。* (4认同)
  • @dbc“记录在 MS 网站上的某处,让我们面对它是不断变化的信息流沙”比“方法的行为记录在方法自己的文档中”有用性大约低 100 倍! (3认同)
  • 参考:[如何将类字段与 System.Text.Json.JsonSerializer 一起使用?](/sf/ask/4069783161/ ) (2认同)
  • 还有这个问题 - [JsonSerializer 应该支持字段和属性](https://github.com/dotnet/corefx/issues/36505) (2认同)