Unity Json 之三

Posted 飞天艾特小猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity Json 之三相关的知识,希望对你有一定的参考价值。

今天在网上看到一个simplejson,直接调用这两个API就可以了,简单易用

string jsonstr = SimpleJson.SimpleJson.SerializeObject(json);
Debug.LogError(jsonstr);
TestJson test = SimpleJson.SimpleJson.DeserializeObject<TestJson>(jsonstr);

做了测试和JsonUtility.ToJson(json);几乎是一样的,但是JsonUtility.ToJson(json); 需要在每个类上加上[System.Serializable] 特性标签 ,并且只能用字段,不能用属性 ,都可以满足我们日常需求

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class TestJson
{
    [SerializeField] //经测试,加不加都可以
    public string Name;
    [SerializeField]
    public Student[] stud;
}
[System.Serializable]
public class Student
{
    [SerializeField]
    public string School;
    [SerializeField]
    public Gender gender;
}

[System.Serializable]
public class Gender
{
    [SerializeField]
    public int age;
    [SerializeField]
    public List<int> list;
}



public class TestSimpliJson : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        Tess();
    }
    void Tess()
    {
        TestJson json = new TestJson();
        json.Name = "飞天小猪";
        json.stud = new Student[4];

        for (int i = 0; i < json.stud.Length; i++)
        {
            json.stud[i] = new Student();
            json.stud[i].School = "飞天小猪" + i;
            json.stud[i].gender = new Gender();
            json.stud[i].gender.age = i;
            json.stud[i].gender.list = new List<int>();
            for (int j = 0; j < i * i; j++)
            {
                json.stud[i].gender.list.Add(j);
            }
        }

        string jsonstr = SimpleJson.SimpleJson.SerializeObject(json);
        Debug.LogError(jsonstr);
        TestJson test = SimpleJson.SimpleJson.DeserializeObject<TestJson>(jsonstr);
        string strJson = JsonUtility.ToJson(json);
        Debug.LogError(strJson);
    }
}

 

两种方式,输出如下

{"Name":"飞天小猪","stud":[{"School":"飞天小猪0","gender":{"age":0,"list":[]}},{"School":"飞天小猪1","gender":{"age":1,"list":[0]}},{"School":"飞天小猪2","gender":{"age":2,"list":[0,1,2,3]}},{"School":"飞天小猪3","gender":{"age":3,"list":[0,1,2,3,4,5,6,7,8]}}]}

 

 不过如果不给list赋值,稍微有点不一样的地方

{"Name":"飞天小猪","stud":[{"School":"飞天小猪0","gender":{"age":0,"list":null}},{"School":"飞天小猪1","gender":{"age":1,"list":null}},{"School":"飞天小猪2","gender":{"age":2,"list":null}},{"School":"飞天小猪3","gender":{"age":3,"list":null}}]}

 

{"Name":"飞天小猪","stud":[{"School":"飞天小猪0","gender":{"age":0,"list":[]}},{"School":"飞天小猪1","gender":{"age":1,"list":[]}},{"School":"飞天小猪2","gender":{"age":2,"list":[]}},{"School":"飞天小猪3","gender":{"age":3,"list":[]}}]}

 

以上是关于Unity Json 之三的主要内容,如果未能解决你的问题,请参考以下文章

unity3d游戏开发学习分享之表面着色器讲解

Unity之Json数据处理

Unity 之 Excel表格转换为Unity用的文件格式 -- ScriptableObject,Json,XML 全部搞定

《转》Unity3D研究院编辑器之5.3JSON的序列化

Unity自定义组件之序列帧播放组件

DeepID人脸识别算法之三代