【发布时间】:2019-03-01 18:54:51
【问题描述】:
我有一个如下所示的 JSON 对象:
{
"Name": "John Smith"
"Age": 18
"Children" : [
{
"Name": "Little Johnny"
"Age": 4
"Children": []
}
]
}
我的模型对象看起来像这样
public class Person {
public string Name { get; set; }
public int Age { get; set; }
public IList<Person> Children { get; set; }
public Guid? TrackingKey { get; set; }
}
如您所见,“TrackingKey”属性不是 JSON 的一部分。
我希望使用我在 JSON 反序列化时提供的值设置 TrackingKey 属性。
父级和所有子级的跟踪键都是相同的。
但是它不能是我在声明模型时可以使用 DefaultValue 属性传入的静态值。
将跟踪密钥分配给一组父母及其所有孩子的最佳方法是什么?
【问题讨论】:
-
首先,为什么要定义tracking id?
-
生成TrackingKey的逻辑是否涉及Person对象中数据以外的外部数据?
-
@Matt.G - 是的,跟踪密钥是外部的
-
恐怕在反序列化期间没有直接设置 TrackingKey 的方法(除了使用 DefaultValue 属性的静态值)。你可以在反序列化后设置它
-
@Matt.G - 这也是我的后备计划。我想知道是否有任何委托或箭头函数等可用于“转换”反序列化后的对象。或者我将需要递归循环我的集合中的每个项目以添加我试图避免的跟踪键。
标签: c# json json.net json-deserialization