如何获取JToken中带CUSTOM.前缀的属性并反序列化为CustomizedData列表
实现方案
你可以直接用Newtonsoft.Json自带的API遍历JToken属性完成过滤,全程仅读取数据,不会修改原始JToken内容,代码示例如下:
using Newtonsoft.Json.Linq; using System.Collections.Generic; using System.Linq; // 入参为你的原始JToken对象 public List<CustomizedData> ExtractCustomProperties(JToken originJToken) { // 仅做类型转换,不修改原始数据 JObject originJObj = originJToken as JObject; if (originJObj == null) { return new List<CustomizedData>(); } // 过滤前缀匹配的属性并映射为目标类实例 return originJObj.Properties() .Where(prop => prop.Name.StartsWith("CUSTOM.")) .Select(prop => new CustomizedData { PropertyName = prop.Name, Value = prop.Value.ToString() }) .ToList(); }
补充说明
- 如果你需要把属性名中的
CUSTOM.前缀去掉,将PropertyName = prop.Name修改为PropertyName = prop.Name.Remove(0, "CUSTOM.".Length)即可 - 若属性值存在非字符串类型,可根据业务需要调整
Value的转换逻辑,上述代码默认取序列化后的字符串值 - 所有操作均为只读操作,不会修改原始JToken的任何内容
内容的提问来源于stack exchange,提问作者DarkChocoBar
相关产品推荐
相关产品推荐

