System.Text.Json.JsonSerializer.Serialize 返回空 Json 对象“”[重复]

Posted

技术标签:

【中文标题】System.Text.Json.JsonSerializer.Serialize 返回空 Json 对象“”[重复]【英文标题】:System.Text.Json.JsonSerializer.Serialize returns empty Json object "" [duplicate]System.Text.Json.JsonSerializer.Serialize 返回空 Json 对象“”[重复] 【发布时间】:2020-03-06 03:29:13 【问题描述】:

环境: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);

【问题讨论】:

【参考方案1】:

我很确定序列化程序不适用于字段。 所以请改用属性。

public int MyInt  get; set; 

【讨论】:

如果是这样,那到底为什么是not documented? 参考:How to use class fields with System.Text.Json.JsonSerializer? 还有这个问题 - JsonSerializer should support field as well as properties @stuartd - 已记录在案。请参阅How to serialize and deserialize JSON in .NET: Serialization behavior:默认情况下,所有公共属性都是序列化的。您可以指定要排除的属性...目前,已排除字段。 @dbc“记录在 MS 网站上的某个地方,这让我们面对它是一个不断变化的信息流沙”比“方法的行为记录在方法自己的文件中”有用大约 100 倍文档”!

以上是关于System.Text.Json.JsonSerializer.Serialize 返回空 Json 对象“”[重复]的主要内容,如果未能解决你的问题,请参考以下文章