LitJson

文章介绍了如何在Unity中集成和使用LitJson库,包括下载、导入、解决警告、读取与解析JSON文件、将C#数据转换为JSON格式以及对文件的写入和修改操作。示例代码展示了如何加载JSON文件、转换数据类型以及修改并保存JSON数据。

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

个人笔记记录

下载LitJson:https://litjson.net

LitJson比UnityJson自带的功率低。
在GitHub里面下载litjson:http://Github.net/LitJson
下载后打开src文件里面的LitJson文件
在这里插入图片描述
只保留里面的.cs文件,其余的删除
在这里插入图片描述
把LitJson文件复制到Unity中,到进入有报一个Warning警告点进去把警告的那行删除即可。
在这里插入图片描述
在这里插入图片描述
新建一个json文件,试用[1,2,3]能否输出来。创建一个C#文件,引入LitJson。将json文件中的列表元素导出,获得Json数据(类似C#的数据):JsonMapper.ToObject<>();

using LitJson;
public class Lit_item : MonoBehaviour
{
    void Start()
    {
        TextAsset asset = Resources.Load<TextAsset>("JSON/lit_item");
        string json = asset.text;
        List<int> js =JsonMapper.ToObject<List<int>>(json);
        Debug.Log(js[0]);
    }
}
unity中TextAssert支持的文件有:

当把对象当成字典使用需要键和值的类型一致。
在这里插入图片描述
将json文件中的数据总的转成C#数据,在进行输出打印

void PJData()
    {
        TextAsset asset = Resources.Load<TextAsset>("JSON/LitJson/table");
        string json = asset.text;
        //总的数据
        JsonData js = JsonMapper.ToObject<JsonData>(json);

        JsonData row = js[1];
        Debug.Log(row["Name"]);//第二个数据的名字
        
        //循环打印出数据
        if (js.IsArray)
        {
            for (int i = 0; i < js.Count; i++)
            {
                Debug.Log((int)js[i]["ID"]);
                Debug.Log(js[i]["Name"].ToString());
            }
        }
    }

将C#数据转换为Json数据(JsonMapper.ToJson)
列表->Json :JsonMapper.ToJson(new List<int>(){12,123,1234})
字典->json :JsonMapper.ToJson(new Dictionary<string,int>(){{"aa",1122},{"bb",2233},{"cc",3344}})
任意类型->json:

JsonData b = new JsonData();
        b["u"] = 13;
        b["n"] = "san";
        b["is"] = false;
        b["nu"] = null;
        Debug.Log(b.ToJson());

结果:
在这里插入图片描述

JSON数据修改

unity中有个特殊的写入目录:Application类(C#的API)
查看写入文件目录位置:Debug.Log(Application.persistentDataPath);
会随着项目的不同而变化
在这里插入图片描述
判断文件是否存在,没有就创建该文件并且写入内容,有就读取其中的内容:

 //判断文件是否存在
        if (!File.Exists(path))
        {
            //写入文件所有内容
            File.WriteAllText(path,"hello");
        }
        else
        {
            //读取文件内容
            File.ReadAllText(path);
        }
使用LitJson修改文件中的数据

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

        //判断文件是否存在
        if (!File.Exists(path))
        {
            //写入文件所有内容
           File.WriteAllText(path,"[1,2,3]");
        }
        else
        {
            //读取json文件内容(json字符串)
            string contents=File.ReadAllText(path);
            //将json字符串转为json数据
            JsonData data = JsonMapper.ToObject(contents);
            //修改数据
            data[2] = 400;
            //修改的数据转换成字符串再写入
            File.WriteAllText(path,data.ToJson());
        }

JsonData是引用数据类型,对象的修改会直接影响原始数据

XML(基本不用)限制太多,性能不好

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

05-30
### LitJson 库的 C# 使用方法及功能介绍 LitJson 是一个轻量级的 JSON 解析库,适用于 Unity 和其他 C# 项目中的 JSON 数据处理。以下是关于 LitJson 的使用方法和功能的详细介绍。 #### 1. 安装与导入 在 Unity 项目中使用 LitJson,需将 `LitJson.dll` 文件放置在项目的 `Assets/Plugins/` 目录下[^1]。对于非 Unity 项目,可以通过 NuGet 包管理器安装 LitJson: ```bash Install-Package LitJson ``` #### 2. 基本功能 LitJson 提供了两个核心功能:**序列化** 和 **反序列化**。 - **序列化**:将对象转换为 JSON 字符串。 - **反序列化**:将 JSON 字符串转换为对象。 #### 3. 代码示例 ##### 序列化对象为 JSON 字符串 以下代码展示了如何将一个自定义类的对象序列化为 JSON 字符串: ```csharp using System; using LitJson; public class Person { public string Name { get; set; } public int Age { get; set; } } public class Program { public static void Main() { var person = new Person { Name = "Alice", Age = 30 }; string jsonString = JsonMapper.ToJson(person); Console.WriteLine(jsonString); // 输出: {"Name":"Alice","Age":30} } } ``` 此代码片段使用 `JsonMapper.ToJson` 方法将 `Person` 对象转换为 JSON 字符串[^5]。 ##### 反序列化 JSON 字符串为对象 以下代码展示了如何将 JSON 字符串反序列化为对象: ```csharp using System; using LitJson; public class Person { public string Name { get; set; } public int Age { get; set; } } public class Program { public static void Main() { string jsonString = "{\"Name\":\"Bob\",\"Age\":25}"; var person = JsonMapper.ToObject<Person>(jsonString); Console.WriteLine($"Name: {person.Name}, Age: {person.Age}"); // 输出: Name: Bob, Age: 25 } } ``` 此代码片段使用 `JsonMapper.ToObject<T>` 方法将 JSON 字符串转换为 `Person` 对象[^6]。 #### 4. 处理复杂数据结构 LitJson 支持嵌套对象和数组的序列化与反序列化。例如: ```csharp using System; using System.Collections.Generic; using LitJson; public class Address { public string City { get; set; } public string Country { get; set; } } public class Person { public string Name { get; set; } public int Age { get; set; } public Address Address { get; set; } public List<string> Hobbies { get; set; } } public class Program { public static void Main() { var person = new Person { Name = "Charlie", Age = 28, Address = new Address { City = "New York", Country = "USA" }, Hobbies = new List<string> { "Reading", "Traveling" } }; string jsonString = JsonMapper.ToJson(person); Console.WriteLine(jsonString); // 输出: {"Name":"Charlie","Age":28,"Address":{"City":"New York","Country":"USA"},"Hobbies":["Reading","Traveling"]} } } ``` 上述代码展示了如何处理嵌套对象和列表类型的属性[^7]。 #### 5. 注意事项 - 确保模型类的属性具有公共的 getter 和 setter,否则可能会导致序列化或反序列化失败。 - 如果模型中包含复杂类型(如嵌套类),LitJson 会自动递归处理这些类型并生成相应的 JSON 结构[^7]。 #### 6. 兼容性 在 Unity 项目中使用 LitJson 时,请确保 Unity 版本与 LitJson 插件兼容。如有问题,可参考 LitJson 的官方文档或社区支持[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值