[Unity][JSON][csv][JSONUnity]csv-JSON复杂数据的管理

来源:互联网 发布:2017年好听的网络歌曲 编辑:程序博客网 时间:2024/06/06 18:36


XML具有可读性,但是 较难维护,如果 是个人开发的话,使用 JSON 还是可以的。

和LUA的数组一样灵活。但是 很难维护JSON的数据(添加,删除)

这个时候 Excel表格的强大的可维护性就体现出来了。


Excel - csv - JSON


桌面空白处,鼠标右键--新建--Microsoft Office Excel 工作表(前提是安装了官方 的Windows Office ,包含Excel,本文不赘述。)



Excel 表格 数据如下所示



另存为 csv格式的文件



右键该文件,打开方式--记事本



复制该CSV文件的内容



打开参考资料1,粘贴到如下图所示的红色方框处,点击 按钮CSV TO JSON



可以把 转换 的结果 另存为 文件。我是直接 复制 转换的结果



因为Stats 数组有问题,显示不了。所以就删除了。


粘贴到这个JSON文件夹内。(粘贴后的结果如下右图所示)


{
    "Items":[
    ]
}



JSONDemon.cs(代码根据 相关资料1改编的)

using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;using System.Linq;//.OfType//Using JSONUtility in Unity 5.3 - Working with JSON in Unitypublic class JSONDemon : MonoBehaviour {    string path;    string jsonString;    private void Start()    {        path = Application.streamingAssetsPath + "/Creature.json";        string jsonStringZ = File.ReadAllText(path);        Debug.Log("-----------------------" + jsonStringZ);        //Load as Array        Creature[] _tempLoadListDataZ = JsonHelper.FromJson<Creature>(jsonStringZ);        //Convert to List        List<Creature> loadListDataZ = _tempLoadListDataZ.OfType<Creature>().ToList();        for (int i = 0; i < loadListDataZ.Count; i++)        {            Debug.Log("ZZZGot: " + loadListDataZ[i].Name+"   Level:"+ loadListDataZ[i].Level);        }        Debug.Log("-----------------------");        List<PlayerData> saveListData = new List<PlayerData>();        PlayerData saveData = new PlayerData();        saveData.name = "Programmer666";        saveData.score = 80;        saveListData.Add(saveData);        PlayerData saveData1 = new PlayerData();        saveData1.name = "Programmer777";        saveData1.score = 90;        saveListData.Add(saveData1);        string jsonToSave = JsonHelper.ToJson(saveListData.ToArray());        PlayerPrefs.SetString("Data", jsonToSave);        PlayerPrefs.Save();//保存在 PlayerPrefs.Save() 本地化保存数据                string jsonToLoad = PlayerPrefs.GetString("Data");        //Load as Array        PlayerData[] _tempLoadListData = JsonHelper.FromJson<PlayerData>(jsonToLoad);        //Convert to List        List<PlayerData> loadListData = _tempLoadListData.OfType<PlayerData>().ToList();        for (int i = 0; i < loadListData.Count; i++)        {            Debug.Log("Got: " + loadListData[i].name);        }        Debug.Log("-----------------------"+jsonToLoad);        File.WriteAllText(Application.dataPath + "/Player.json", jsonToLoad);        string jsonStringK = File.ReadAllText(Application.dataPath + "/Player.json");        Debug.Log("-----------------------" + jsonStringK);        //Load as Array        PlayerData[] _tempLoadListData1 = JsonHelper.FromJson<PlayerData>(jsonStringK);        //Convert to List        List<PlayerData> loadListData1 = _tempLoadListData.OfType<PlayerData>().ToList();        for (int i = 0; i < loadListData1.Count; i++)        {            Debug.Log("777Got: " + loadListData1[i].name);        }    }}[System.Serializable]public class Creature{    public string Name;    public int Level;    public int[] Stats;}[System.Serializable]public class PlayerData{    public string name;    public int score;}



JsonHelper.cs

using System.Collections;using System.Collections.Generic;using UnityEngine;public static class JsonHelper{    public static T[] FromJson<T>(string json)    {        Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);        return wrapper.Items;    }    public static string ToJson<T>(T[] array)    {        Wrapper<T> wrapper = new Wrapper<T>();        wrapper.Items = array;        return JsonUtility.ToJson(wrapper);    }    public static string ToJson<T>(T[] array, bool prettyPrint)    {        Wrapper<T> wrapper = new Wrapper<T>();        wrapper.Items = array;        return JsonUtility.ToJson(wrapper, prettyPrint);    }    [System.Serializable]//    private class Wrapper<T>    {        public T[] Items;    }}




显示结果



下一篇文章,在 JSON 中 保存 数组

 

[Unity][JSON][csv][JSONUnity]csv-JSON如何在CSV文件中保存数组并读取JSON数组



相关资料:

1.[Unity][JSON][List][JSONUnity]多个角色的数据读取写入JSON数据

2.


参考资料:

1.

Convert CSV to JSON

2.

在线JSON校验格式化工具(Be JSON)

3.

JSON在线解析及格式化验证 - JSON.cn

4.



原创粉丝点击