You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:23:18