【发布时间】:2012-03-22 09:38:52
【问题描述】:
我有一些数据必须序列化为 JSON。我正在使用 JSON.NET。我的代码结构是这样的:
public struct structA
{
public string Field1;
public structB Field2;
public structB Field3;
}
public struct structB
{
public string Subfield1;
public string Subfield2;
}
问题是,我的 JSON 输出只需要 Field1 或 Field2 或 Field3 - 这取决于使用哪个字段(即不为空)。
默认情况下,我的 JSON 如下所示:
{
"Field1": null,
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
"Field3": {"Subfield1": null, "Subfield2": null},
}
我知道我可以使用NullValueHandling.Ignore,但这给了我这样的 JSON:
{
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
"Field3": {}
}
而我需要的是这个:
{
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
}
有没有简单的方法来实现这一点?
【问题讨论】:
-
因为您使用的是
structs,所以唯一可能有空值的字段是Field1。如果希望 Field2 和 Field3 可以为空,则需要将它们设为引用类型而不是值类型。
标签: c# .net json serialization json.net