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

C#中JSON字符串转对象及数组转JSON字符串的技术问询

嘿,刚好我之前处理过几乎一模一样的JSON结构转换需求,给你分享两种在C#里最常用的实现方式——一种是用.NET官方自带的System.Text.Json(现在是主推的原生库,不需要额外安装包),另一种是老牌的Newtonsoft.Json(Json.NET,兼容性好,很多老项目在用)。两种方案都包含你要的JSON转C#对象和数组转JSON字符串功能,你可以根据自己的项目环境选。

方案一:使用.NET原生System.Text.Json(推荐)

1. 先定义匹配JSON结构的C#实体类

首先得把你给的JSON结构映射成对应的C#类,我已经帮你写好了,注意用了可空引用类型来适配那些可能为null的字段(比如Team的Code、English翻译):

// 翻译类,对应Traductions节点
public class Traductions
{
    public string? French { get; set; }
    public string? English { get; set; }
}

// 组信息类,对应Groupe节点
public class Groupe
{
    public string? Code { get; set; }
    public Traductions? Traductions { get; set; }
}

// 业务单元类,对应BusinessUnit节点
public class BusinessUnit
{
    public string? Code { get; set; }
    public Traductions? Traductions { get; set; }
}

// 团队类,对应Team节点
public class Team
{
    public string? Code { get; set; }
    public Traductions? Traductions { get; set; }
}

// 职位类,对应Title、Title2节点
public class Title
{
    public string? Code { get; set; }
    public Traductions? Traductions { get; set; }
}

// 根实体类,对应整个JSON对象
public class Employee
{
    public string? Id { get; set; }
    public string? Acronym { get; set; }
    public string? FirstName { get; set; }
    public string? LastName { get; set; }
    public Groupe? Groupe { get; set; }
    public BusinessUnit? BusinessUnit { get; set; }
    public Team? Team { get; set; }
    public Title? Title { get; set; }
    public Title? Title2 { get; set; }
}

2. JSON字符串转C#对象

用JsonSerializer.Deserialize方法就能轻松实现,代码示例:

using System.Text.Json;

// 假设这是你接收到的JSON字符串
string jsonInput = "{ \"Id\": \"617723\", \"Acronym\": \"\", \"FirstName\": \"XXXXX\", \"LastName\": \"XXXXX\", \"Groupe\": { \"Code\": \"XXXXX\", \"Traductions\": { \"French\": \"\", \"English\": \"XXXXX\" } }, \"BusinessUnit\": { \"Code\": \"XXXXX\", \"Traductions\": { \"French\": \"\", \"English\": \"XXXXX\" } }, \"Team\": { \"Code\": null, \"Traductions\": { \"French\": \"\", \"English\": null } }, \"Title\": { \"Code\": null, \"Traductions\": { \"French\": \"\", \"English\": \"XXXXX\" } }, \"Title2\": { \"Code\": null, \"Traductions\": { \"French\": \"\" } } }";

// 转换为C#对象
Employee? employee = JsonSerializer.Deserialize<Employee>(jsonInput);

// 现在你可以直接访问对象属性了,比如
if (employee != null)
{
    Console.WriteLine($"员工ID: {employee.Id}");
    Console.WriteLine($"英文职位: {employee.Title?.Traductions?.English}");
}

3. 数组(集合)转JSON字符串

如果有多个Employee对象组成的数组或集合,用JsonSerializer.Serialize方法即可,还可以加格式化选项让JSON更易读:

using System.Text.Json;

// 构造一个员工数组
var employees = new List<Employee>
{
    new Employee { Id = "617723", FirstName = "John", LastName = "Doe" },
    new Employee { Id = "617724", FirstName = "Jane", LastName = "Smith" }
};

// 转换为JSON字符串(格式化输出)
string jsonOutput = JsonSerializer.Serialize(employees, new JsonSerializerOptions { WriteIndented = true });

Console.WriteLine(jsonOutput);
方案二:使用Newtonsoft.Json(Json.NET)

如果你项目里已经在用这个库,或者需要兼容旧版本.NET,也可以用这个方案,步骤类似:

1. 先安装NuGet包

首先在NuGet包管理器里搜索Newtonsoft.Json并安装,或者用命令行:

Install-Package Newtonsoft.Json

2. 实体类可以复用(也可以加[JsonProperty]特性精确映射)

实体类和上面的一样,不需要改;如果需要更精确的字段映射(比如属性名和JSON字段名不一致),可以加[JsonProperty("字段名")]特性,比如:

public class Employee
{
    [JsonProperty("Id")]
    public string? EmployeeId { get; set; }
    // 其他属性...
}

3. JSON字符串转C#对象

用JsonConvert.DeserializeObject方法:

using Newtonsoft.Json;

string jsonInput = "你的JSON字符串";
Employee? employee = JsonConvert.DeserializeObject<Employee>(jsonInput);

// 访问属性
if (employee != null)
{
    Console.WriteLine($"员工姓名: {employee.FirstName} {employee.LastName}");
}

4. 数组(集合)转JSON字符串

用JsonConvert.SerializeObject方法,同样支持格式化:

using Newtonsoft.Json;

var employees = new List<Employee>
{
    new Employee { Id = "617723", FirstName = "John" },
    new Employee { Id = "617724", FirstName = "Jane" }
};

// 格式化输出JSON
string jsonOutput = JsonConvert.SerializeObject(employees, Formatting.Indented);

Console.WriteLine(jsonOutput);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:15:20