序列化时如何为循环值设置null
Posted
技术标签:
【中文标题】序列化时如何为循环值设置null【英文标题】:How to set null for looping value when serialize 【发布时间】:2018-07-11 18:30:57 【问题描述】:我找不到我的问题的标题。 我的课如下
class Employee
public string Name get; set;
public List<Employee> Subordinates get; set;
如果我序列化这个类对象,如下所示
[
"Name": "first person",
"Subordinates": [
"Name": "second person",
"Subordinates": null
]
,
"Name": "second person",
"Subordinates": null
]
但我需要这样的
[
"Name": "first person",
"Subordinates": null
,
"Name": "second person",
"Subordinates": null
]
我怎样才能得到这个 我不只使用这个类。我有很多像员工一样的班级,所以我需要为所有班级提供一种解决方案。 我正在为一类使用下面的代码。我知道这不是解决方案,但我没有找到更好的解决方案
var employees = //sql query .ToList()
foreach(var item in employees)
item.Subordinates = null;
return Json(employess)
【问题讨论】:
你可以调制var employees = //sql query .ToList()
,提供sql查询或Linq查询
问题是“第一人称”似乎有一个从属的“第二人称”。为什么不直接解决呢?
NicoRiff:问题在于,对输出进行简单的反序列化会导致"second person"
出现两个不同的实例,这是不希望的。希望尊重实例的分层引用。
@Viplock 我正在使用 LINQ。在我的 dbcontext 中启用了延迟加载
是提供 linq 的代码,你的解决方案可以从那里得到
【参考方案1】:
根据您使用的序列化程序,解决方案会有所不同。
尝试将[NonSerialized]
[XmlIgnore]
[ScriptIgnore]
添加到List
属性。
【讨论】:
谢谢。是的,这是一个解决方案,但我不想要这个。因为我将来会使用这个深度。我正在考虑创建一个 WebApi,所以如果我使用它,我需要一个 json 的许多请求 然后您可以使用该属性,当您需要 webapi 时,将其删除 我想我可以用一段时间。谢谢你:)以上是关于序列化时如何为循环值设置null的主要内容,如果未能解决你的问题,请参考以下文章
如何为复杂的 Json 有效负载设置属性及其值并进行序列化?