【发布时间】:2020-02-10 22:30:16
【问题描述】:
假设我有这段 json:
[{
"id": 123,
"description": "test",
"group": {
"id": 456,
"description": "org"
}
}]
我想将上面的 JObject 反序列化为 C# 对象。传统上我已经解决了这样的问题(其中 jObject 是从上面的 json 字符串加载的 JObject):
public class Item
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("group")]
public Group Group { get; set; }
}
public class Group
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
}
var foo = jObject.ToObject<Item>();
如果在 Item 类中,我只想有一个名为 GroupId 的 int 类型的字段,它只存储嵌套 Group 对象中的 id 字段怎么办?创建一个方法来将该值提取到 Item 中名为“GroupId”的字段中会很简单,但是因为我正在处理的 json 有很多类似的嵌套对象,我只对 id 感兴趣,所以我想知道我是否可以使用 JsonSerializer 类在反序列化时以某种方式自动完成填充“GroupId”字段?或者如果我可能不知道 Newtonsoft.Json 包中还有另一种方法。
我还没有广泛地处理 Json,所以如果这是 100 级的东西,我很抱歉;我找不到任何直接专门解决这个问题的东西。
【问题讨论】: