如何高效从现有JObject中生成其子集JObject?
提取JObject中子数组元素为新JObject的优化实现
我有一个JObject(示例JSON如下),需要提取其中的SubArray子数组,生成一个以该子数组内元素为父级的新JObject,包含该元素的所有同级及子级内容。
示例JSON:
[ { "Date": "2023-06-30", "Code": 12, "SubArray": [ { "Id": 404, "Title": "MyTitle", "Description": "Stuff" } ] } ]
当前实现方式
先将子数组序列化为字符串,再移除首尾括号后反序列化为JObject:
string mystring = JsonConvert.SerializeObject(JObject1["SubArray"]); JObject JObject2 = JsonConvert.DeserializeObject<JObject>(mystring.TrimStart('[').TrimEnd(']'));
优化后的简洁实现
直接通过JToken的索引访问和类型转换,无需序列化/反序列化的额外开销,代码更简洁高效:
string json = "<text from json sample above>"; JObject JObject1 = JObject.Parse(json); JObject JObject2 = JObject1["SubArray"][0].ToObject<JObject>();
说明:这种方式直接操作JSON.NET的JToken对象,跳过了字符串序列化和反序列化的中间过程,性能更优。若SubArray包含多个元素,只需调整索引或遍历数组即可批量处理。
内容的提问来源于stack exchange,提问作者SpaghettiWestern
相关产品推荐
相关产品推荐

