JSON官网
下载”c#/LitJSON. “, 将LitJson.dll拖到unity中”Assets/Plugins”文件夹.
JSON在线编辑器
编辑/校对json文件. 感觉比较好用的一个编辑器.
[测试用Json文件 – Info.json]
[
{ "id": 0, "name": "行尸走肉", "optionArray": [ {"num": 0,"str": "shit 1!"}, {"num": 1,"str": "shit 2!"}, {"num": 2,"str": "shit 3!"}],"position":{"x":1,"y":1}},
{ "id": 1, "name": "金蝉脱壳", "optionArray": [ {"num": 0,"str": "shit 1!"}, {"num": 1,"str": "shit 2!"}, {"num": 2,"str": "shit 3!"}],"position":{"x":2,"y":1}},
{ "id": 2, "name": "百里挑一", "optionArray": [ {"num": 0,"str": "shit 1!"}, {"num": 1,"str": "shit 2!"}, {"num": 2,"str": "shit 3!"}],"position":{"x":3,"y":1}},
{ "id": 3, "name": "金玉满堂", "optionArray": [ {"num": 0,"str": "shit 1!"}, {"num": 1,"str": "shit 2!"}, {"num": 2,"str": "shit 3!"}],"position":{"x":4,"y":1}},
{ "id": 4, "name": "背水一战", "optionArray": [ {"num": 0,"str": "shit 1!"}, {"num": 1,"str": "shit 2!"}, {"num": 2,"str": "shit 3!"}],"position":{"x":5,"y":1}},
{ "id": 5, "name": "霸王别姬", "optionArray": [ {"num": 0,"str": "shit 1!"}, {"num": 1,"str": "shit 2!"}, {"num": 2,"str": "shit 3!"}],"position":{"x":6,"y":1}}
]
[Json读取类 – JsonIO.cs]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using LitJson;
//Json读写 -----------------------------------------
public class JsonIO
{
//Json文件读取
static public List<TestData> LoadJsonFromFile(string path)
{
//检查文件是否存在 -- 否:返回null.
if (!File.Exists (path)) {
Debug.LogWarning ("[ 文件不存在! 取消读取操作! ] 文件读取路径 : " + path );
return null;
}
//读取Json文件.
//当前的json文件是一个数组.所以使用了<List<TestData>>来读取.
//根据使用的数据类型<T>值可以是任何类型.相应返回值做一些修改即可.非常方便.
return JsonMapper.ToObject<List<TestData>> (new JsonReader (File.ReadAllText (path)));
}
}
//测试数据 -----------------------------------------
//测试数据 -- string/int/Array/Vector3(实际数据保存的是Vector2)
[SerializeField]
public class TestData{
public string name{ get; set;}
public int id{ get; set;}
public Option[] optionArray{ get; set;}
public Vector3 position{ get; set;}
public override string ToString () {
string str = string.Empty;
str = string.Format("[ TestData: name={0}, id={1} ], position={2}", name, id, position.ToString()) + "\n";
foreach (var temp in optionArray) {
str += temp.ToString () + "\n";
}
return str;
}
}
[SerializeField]
public class Option{
public int num{ get; set;}
public string str{ get; set;}
public override string ToString () {
return string.Format ("<Option> : num = {0}, str = {1}",num, str);
}
}
// -----------------------------------------
[调用 – JsonExample.cs]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class JsonExample : MonoBehaviour
{
public Text _text; //创建一个UGUI控件 -- 用来显示读取到的文件
private List<TestData> _list; //保存读取的数据
private string _filePath; //Json文件路径<Assets/Datas/Resources/Info.json>
//初始化
void Start()
{
_text.text = string.Empty;
_filePath = Application.dataPath + "/Datas/Resources/Info.json";
}
//每帧调用
void Update ()
{
//按下鼠标左键 -- 设置Text
if (Input.GetMouseButtonDown (0))
{
//读取Json文件到列表.
_list = JsonIO.LoadJsonFromFile (_filePath);
//按元素读取数据.
foreach (var temp in _list) {
_text.text += temp.ToString ();
//创建测试物体 && 设置物体position.
var go = new GameObject (temp.name);
go.transform.position = new Vector2 (temp.position.x, temp.position.y);
}
}
//按下鼠标右键 -- 清空Text
if (Input.GetMouseButtonDown (1))
{
_text.text = string.Empty;
}
}
}
本文介绍如何在Unity中使用LitJSON进行JSON文件的读取与解析,并通过具体实例展示了如何将JSON数据转换为C#对象,适用于游戏开发场景。

被折叠的 条评论
为什么被折叠?



