欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity—JSON处理

程序员文章站 2024-01-20 12:39:52
...

1:  JSON (JavaScript Object Notation)

    随着JavaScript的流行与互联网应用,JavaScript里面最强大的数据类型Object,使用起来极其的方便,为了能更好的做数据交换,设计了JSON协议,能够将JavaScript里面的Object,变成可以阅读的文本数据及JSON数据格式。实现JavaScript里面的Object与JSON的转换,Object对象转换成JSON数据以后,方便传输与存储,JSON变为Object方便对象重建;

2: python语言, Lua语言等其它的脚本语言都有类是于JavaScript的Object数据结构,所以JSON数据能在其它的语言里面也非常方便的使用;

3: JSON采用完全独立于语言的文本格式(string),易于阅读与编写以及解析与生成,在很多时候数据交换都采用JSON, 数据--->JSON-->传输,存储--->解码JSON-->数据

4: 上面的过程又叫序列化与反序列化;

那么直接上代码:

using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
  
[System.Serializable]  
class Subsub  
{  
    public string string_subsub;   
}  
  
[System.Serializable]  
class Sub   
{  
    public int int_a = 10;  
    public string string_b = "Hello word";  
    public Subsub subsub;  
  
    [SerializeField]  
    bool bool_c = true;  
  
    //public void fun()  
    //{  
    //    Debug.Log("啥也不是");   
    //}  
}  
  
public class JSON : MonoBehaviour  
{  
    // Start is called before the first frame update  
    void Start()  
    {  
  
        Sub sub = new Sub();  
        string json_string = JsonUtility.ToJson(sub);  
  
        Debug.Log("封装的字符串"+json_string);  
  
        Sub sub_rec = new Sub();  
        JsonUtility.FromJsonOverwrite(json_string, sub_rec);  
  
        Debug.Log(sub_rec.string_b);  
  
    }  
  
    // Update is called once per frame  
    void Update()  
    {  
          
    }  
}  

序列化只会序列化类里面的public成员,所以如果你想序列化私有成员,就必须在私有成员那里声明为可序列化段

Unity—JSON处理

Unity中有专门的接口帮你去将类序列化成string,

也有专门的接口将已经序列成string的字符串反序列化到提供的对象里面

Unity—JSON处理

按照以上的类,序列化出来的string是这样的

Unity—JSON处理

可以从注释的代码里面看见,我还尝试声明了一个public函数,按能否序列化出来,但是失败了,所以我推断,Unity的JsonUtility.ToJson()接口只能序列化类的成员变量。