【发布时间】:2021-10-18 14:56:36
【问题描述】:
class Program
{
static void Main(string[] args)
{
JSONClass jsonClass = new JSONClass();
JSONElement el = new JSONElement
{
A = 5,
B = "test1"
};
JSONElement el2 = new JSONElement
{
A = 3,
B = "test2"
};
jsonClass.JSONList.Add(el);
jsonClass.JSONList.Add(el2);
var output = JsonSerializer.Serialize<JSONClass>(jsonClass);
Console.WriteLine(output);
}
}
public class JSONClass
{
public List<JSONElement> JSONList = new List<JSONElement>();
}
public class JSONElement
{
public int A { get; set; }
public string B { get; set; }
}
此代码返回{},这意味着JsonSerializer.Serialize 未能完成它应该做的事情。我想这是因为它不够聪明,无法处理自定义类型。这是我的问题,怎么做。互联网上到处都是关于如何编写自定义转换器等的文章,但没有一篇提到自定义类型。
【问题讨论】:
-
“此代码返回 {},这意味着 JsonSerializer.Serialize 未能完成它应该做的事情” - 不,这意味着 JsonSerializer 没有完成您预期的它到。我非常怀疑这是因为您的代码在 properties 中有一个 field 和 JsonSerializer 交易。将您的
JSONList字段更改为属性,我怀疑会没事的。 -
@JonSkeet 很不幸。但无论如何我都会把这个问题留在这里,几十个反对票不会吓到我。感谢您的帮助,但现在我需要弄清楚如何在不使用列表属性名称的情况下对其进行反序列化。但它的主题不同。