如何在C#中仅提取JSON部分字段,忽略其他无关键?
解决JSON序列化时仅保留指定字段的问题
方法1:使用匿名类构造目标结构
直接在LINQ转换时创建匿名类,只保留需要的字段,序列化时就只会生成这些字段:
var orderDetails = orderResult.Select(_ => new { id = (long?)null, order = new { id = _.order.id } }).ToList(); JArray res = JArray.FromObject(orderDetails);
这种方式无需修改原有实体类,适合一次性字段筛选场景。
方法2:创建专用DTO类
如果需要多次复用这个结构,可以定义只包含目标字段的DTO(数据传输对象):
// 定义DTO类 public class MyClassDto { public long? id { get; set; } public OrderDto order { get; set; } } public class OrderDto { public long? id { get; set; } } // LINQ转换并序列化 List<MyClassDto> orderDetails = orderResult.Select(_ => new MyClassDto { id = null, order = new OrderDto { id = _.order.id } }).ToList(); JArray res = JArray.FromObject(orderDetails);
这种方式结构清晰,便于维护和复用。
方法3:手动构建JObject直接生成JSON
如果不需要中间实体类,可以直接用Json.NET的JObject手动构造目标JSON结构:
JArray res = new JArray( orderResult.Select(_ => new JObject( new JProperty("id", null), new JProperty("order", new JObject( new JProperty("id", _.order.id) )) )) );
这种方式灵活性最高,适合复杂的JSON结构定制。
内容的提问来源于stack exchange,提问作者wonka
相关产品推荐
相关产品推荐

