LitJson存读档

本文介绍了在Unity中使用LitJson库进行存档和读档操作时的注意事项,包括确保数据类属性与Json键对应,以及解决因缺少默认构造函数导致的反序列化错误问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接收数据的类属性名必须与Json文本的键一一对应

报错:Default constructor not found for type OperationMark

改正:一般是是因为调用JsonMapper.ToObject时反序列化失败,为反序列化类加上一个无参构造函数即可

引用命名空间:

using LitJson;   using System.IO;

数据存储类

public class Save()
{

    public int id,level;
    public string name;
}

存档:

 Save save = CreateSave();//获取一个数据保存对象
 string filePath = Application.dataPath + "/StringFile" + "/Json.txt";
 //将Save对象转化为Json型的字符串 路径名称主注意.datapath后面加上'/'
 string saveJsonStr = JsonMapper.ToJson(save);
 //创建一个文本写入对象,用它将转化的Json字符串写入文件中
 StreamWriter sw = new StreamWriter(filePath);
 sw.Write(saveJsonStr);
 sw.Close();

 读档:

string filePath 
03-12
### LitJson C# JSON解析库使用方法 #### 安装LitJson库 为了在项目中使用LitJson,需先下载并安装该库。可以通过NuGet包管理器来完成这一操作,在Visual Studio中的Package Manager Console输入命令`Install-Package litjson`即可完成安装[^2]。 #### 创建和序列化对象到JSON字符串 当创建一个类的对象之后,可以利用LitJson将这个对象转换成JSON格式的字符串。下面是一个简单的例子: ```csharp using LitJson; //... public class Person { public string Name { get; set; } public int Age { get; set; } } Person person = new Person() {Name="张三", Age=30}; string jsonString = JsonMapper.ToJson(person); Console.WriteLine(jsonString); // 输出 {"Name":"张三","Age":30} ``` #### 反序列化JSON字符串为对象 如果有一个表示某个类型的JSON字符串,则可将其反序列化回相应的C#对象实例。这同样通过调用`JsonMapper.ToObject<T>()`实现: ```csharp string jsonStr = "{\"Name\":\"李四\",\"Age\":25}"; Person p = JsonMapper.ToObject<Person>(jsonStr); Console.WriteLine($"姓名:{p.Name}, 年龄:{p.Age}"); // 输出 姓名:李四, 年龄:25 ``` 对于中文字符可能出现乱码的情况,确保源文件编码正确以及程序内部处理方式得当能够有效解决问题[^3]。通常情况下,默认UTF-8编码能较好支持多语言文字展示。 #### 处理复杂数据结构 除了基本的数据类型外,LitJson也支持更复杂的嵌套结构如列表、字典等。例如定义一个人物集合,并对其进行序列化与反序列化的操作如下所示: ```csharp List<Person> people = new List<Person>(); people.Add(new Person(){Name="王五", Age=40}); people.Add(new Person(){Name="赵六", Age=35}); string jsonArray = JsonMapper.ToJson(people); List<Person> deserializedPeople = JsonMapper.ToObject<List<Person>>(jsonArray); foreach (var item in deserializedPeople){ Console.WriteLine($"{item.Name},{item.Age}"); } ``` 上述代码展示了如何使用LitJson来进行简单至较为复杂的JSON序列化/反序列化进程。值得注意的是,虽然LitJson功能强大且易于上手,但在性能方面可能不如某些其他第三方库优秀;因此具体选择还需依据实际需求而定[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值