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中有专门的接口帮你去将类序列化成string,
也有专门的接口将已经序列成string的字符串反序列化到提供的对象里面
按照以上的类,序列化出来的string是这样的
可以从注释的代码里面看见,我还尝试声明了一个public函数,按能否序列化出来,但是失败了,所以我推断,Unity的JsonUtility.ToJson()接口只能序列化类的成员变量。
下一篇: Unity 读取解析Json 文件