C#使用LitJson解析JSON文件与字符串实例教程

Mia
Mia
发布时间:2026-10-15 | 4人浏览过
原创

C#开发中常需处理JSON数据交换,使用LitJson配合实体类进行泛型映射是高效的解析方案。本文将详细讲解如何通过JsonMapper将JSON文件或字符串转换为对象结构,以及如何将对象还原为JSON字符串。

一、JSON基础概念与语法

JSON是一种轻量级的数据交换格式,采用完全独立于语言的文本格式。相较于XML,JSON体积更小且易于编写和解析。其核心规则包括:

  • 数据以键值对形式存在(key: value)。
  • 数据之间由逗号分隔。
  • 花括号 {} 保存对象,方括号 [] 保存数组。

一个简单的数组格式JSON示例如下: [{"id":2,"name":"星河爆破","number":999},{"id":3,"name":"九星连珠","number":9}]

二、环境准备:引入JSON库

C#原生不支持高级JSON解析,通常需要借助第三方库。市面上主流的解析器包括LitJson、Newtonsoft.Json等。这里以LitJson为例,可通过NuGet包管理器安装依赖:
步骤:在解决方案资源管理器中右键“管理NuGet程序包”,搜索 LitJson 并安装。

安装完成后,在代码文件中添加引用:

using LitJson;

三、利用JsonMapper解析JSON文件

第1步:基础遍历解析JSON数组

适用场景:当JSON文件直接是一个数组时,可通过迭代 JsonData 集合逐条获取字段值。
操作入口:Console Application 项目。
动作说明:读取txt文件内容,将其转为 JsonData 类型后循环提取数据。

示例代码逻辑:

// 读取文件内容并转化为JsonData集合
JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json.txt"));
foreach (JsonData temp in jsonData)
{
    // 通过索引获取具体字段的值
    int id = Int32.Parse(temp["id"].ToString());
    string name = temp["name"].ToString();
    Console.WriteLine($"ID:{id}, Name:{name}");
}

此方法较为繁琐,每次均需手动转换数据类型。

第2步:使用自定义实体类简化映射

目的:避免手动解析每个字段,提高代码可读性与复用性。
动作说明:新建一个名为 Magic 的类,其属性名称必须与JSON中的Key保持一致。

public class Magic
{
    public int id;
    public string name;
    public int number;
}

核心代码:在循环中实例化对象并赋值

List<Magic> magicList = new List<Magic>();
JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json.txt"));
foreach (JsonData temp in jsonData)
{
    Magic m = new Magic();
    m.id = Convert.ToInt32(temp["id"]);
    m.name = temp["name"].ToString();
    // ... 其他字段赋值
    magicList.Add(m);
}

运行结果显示列表已成功填充对应的实体数据。

第3步:使用泛型批量解析JSON数组(推荐)

优势:利用 JsonMapper.ToObject<T> 泛型方法,可实现JSON到强类型数组或集合的直接自动映射,大幅缩减代码量。
关键参数:T 应指定为对应类型的数组 Magic[] 或泛型集合 List<Magic>。
完成状态:返回的对象可直接用于后续业务逻辑。

数组泛型解析:

Magic[] magicArray = JsonMapper.ToObject<Magic[]>(File.ReadAllText("json.txt"));
foreach(var item in magicArray) { /* 处理 */ }

运行结果一致。

集合泛型解析:

List<Magic> magicklist = JsonMapper.ToObject<List<Magic>>(File.ReadAllText("json.txt"));

同样得到正确结果。

第4步:解析复杂的嵌套JSON对象

当JSON整体为一个对象,且包含数组等子对象时,如物联网设备信息:

{
 "status": 1,
 "devicelist": [{
				"productcode": "126345",
				"devicecode": "15632478",
				"url": "http://..."
			}],
 "apiId": "89757"
}

构建实体类策略:按照层级关系建立多个类。

  1. IotDevice: 包含 status, apiId, 以及 List<DevicelistItem> devicelist.
  2. DevicelistItem: 包含 productcode, devicecode, url.

解析动作:直接将该JSON内容解析为 IotDevice 对象即可。

IotDevice iotdevice = JsonMapper.ToObject<IotDevice>(File.ReadAllText("TextFile.txt"));
foreach(var item in iotdevice.devicelist) { /* 处理子列表 */ }

控制台输出验证了父子层级结构的完整提取。

四、对象反向转化为JSON字符串

除了读取文件,有时需要将内存中的C#对象序列化为JSON字符串以便传输或存储。

IotDevice device1 = new IotDevice();
device1.date = "2022/02/17";
device1.apiId = "89757";
// 调用 ToJson 静态方法
string jsonOutput = JsonMapper.ToJson(device1);
Console.WriteLine(jsonOutput); 

生成的JSON文本符合标准格式,无多余空格或特殊字符干扰。

五、工具与排错建议

常见错误排查: - 属性名不匹配: C#实体类中的属性大小写须与JSON键完全一致(区分大小写),否则解析结果为空或默认值。
- 路径错误: 本地运行时若找不到TXT文件,需确保文件存在于执行目录下或使用绝对路径。

辅助工具: 1. 在线校验JSON格式是否合法(如 json校验工具)。 2. 自动生成C#实体类模板(如 JSON转CSharp工具)。

以上就是C#使用LitJson库解析JSON文件及实体类映射的详细内容,更多关于C# JSON数据处理技巧的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表