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

如何用JSON.Net的LINQ to JSON将JSON解析为含父子关系的自定义对象?

当然可以!用LINQ to JSON处理嵌套自定义类完全没问题

LINQ to JSON(也就是Json.NET里的JObject/JArray这套API)完全支持处理这种包含嵌套自定义类集合的场景,不管是单个嵌套对象还是集合都能轻松搞定。我给你写个完整的示例,一看就懂:

第一步:定义你的自定义类

先把Order和OrderDetail类的结构写好:

public class Order
{
    public int OrderId { get; set; }
    public DateTime OrderDate { get; set; }
    public string CustomerName { get; set; }
    public List<OrderDetail> OrderDetails { get; set; }
}

public class OrderDetail
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public int Quantity { get; set; }
    public decimal UnitPrice { get; set; }
}

第二步:准备示例JSON数据

假设你的订单JSON长这样:

{
  "OrderId": 1001,
  "OrderDate": "2024-05-20T14:30:00",
  "CustomerName": "John Doe",
  "OrderDetails": [
    {
      "ProductId": 1,
      "ProductName": "Laptop",
      "Quantity": 1,
      "UnitPrice": 999.99
    },
    {
      "ProductId": 2,
      "ProductName": "Mouse",
      "Quantity": 2,
      "UnitPrice": 25.50
    }
  ]
}

第三步:用LINQ to JSON解析并填充对象

核心思路是先把JSON解析成JObject,然后逐个提取字段值;对于集合类型(比如OrderDetails),用LINQ遍历JArray并转换为OrderDetail对象:

using Newtonsoft.Json.Linq;

// 假设json是你的订单JSON字符串
string json = "..."; // 替换为上面的示例JSON

// 解析JSON到JObject
JObject orderJson = JObject.Parse(json);

// 构建Order对象
Order order = new Order
{
    OrderId = orderJson["OrderId"].Value<int>(),
    OrderDate = orderJson["OrderDate"].Value<DateTime>(),
    CustomerName = orderJson["CustomerName"].Value<string>(),
    // 处理OrderDetails集合:遍历JArray,转成OrderDetail列表
    OrderDetails = orderJson["OrderDetails"]
        .Select(detail => new OrderDetail
        {
            ProductId = detail["ProductId"].Value<int>(),
            ProductName = detail["ProductName"].Value<string>(),
            Quantity = detail["Quantity"].Value<int>(),
            UnitPrice = detail["UnitPrice"].Value<decimal>()
        })
        .ToList()
};

额外提示:场景选择

如果你的JSON结构和类结构完全匹配,其实直接用JsonConvert.DeserializeObject<Order>(json)更简洁高效。但如果需要做一些自定义操作(比如只提取部分字段、转换字段名、处理JSON里的异常值),LINQ to JSON的灵活性就体现出来了——你可以精准控制每一步的解析逻辑。

内容的提问来源于stack exchange,提问作者webworm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:03:28