首页 > Unity3D频道 > 【Unity杂文】 > Unity3D研究院编辑器之5.3JSON的序列化
2015
11-20

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

Unity5.3 的一项新功能就是Json的序列化,支持嵌套使用,可以把json字符串转成对象,把对象转成json字符串。

目前我用的是测试版。 遗憾的是还不支持字典 还有 Hashtable

或者试试这个人的方法, http://kou-yeung.hatenablog.com/entry/2015/12/31/014611

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

Unity3D研究院编辑器之5.3JSON的序列化》有 31 条评论

  1. 小灰 说:

    Jsonutility 怎么解析 “[{“id”,”1″},{“id”,”2″},{“id”,”3″}]

  2. 蔡怡波 说:

    怎么把json数据保存到本地啊,有什么搞笑的方法吗,一起写下吧

  3. IlIllllllIlI 说:

    Unity5.5.0b4,JsonUtility.FromJson方法貌似不支持中文。报错如下:ArgumentException: JSON parse error: Missing a comma or ‘}’ after an object member.UnityEngine.JsonUtility.FromJson[MyObject] (System.String json) (at C:/buildslave/unity/build/artifacts/generated/common/modules/JSONSerialize/JsonUtilityBindings.gen.cs:24)

  4. Jager 说:

    请问一下,在一个序列化的类里使用了,[Serializable]public class Serialization : ISerializationCallbackReceiver作为这个类的一个属性,然而tojson方法并不能不这个属性变为json,这是unity toJsonapi的问题么,如何解决这个问题呢,

  5. 泛型里可不可以写成List类型的,像这样JsonUtility.FromJson< List < T > >

  6. 赵川 说:

    如果在被序列化的类里面有个object的对象转换过后会丢失掉,遇到过么

  7. 九州散人 说:

    能解析嵌套json吗? 文档说明少得可怜….

    • 雨松MOMO 说:

      能。 不过不支持字典

      • 刘云肖 说:

        using System;using UnityEngine;public class JSONTest : MonoBehaviour{ void Start() { Person s1 = new Person(“张三”, 18, true); Person s2 = new Person(“李四”, 20, true); s1.Brother = s2; s1.SayHello(); s2.SayHello(); string strs1 = JsonUtility.ToJson(s1); print(strs1); Person s11 = JsonUtility.FromJson(strs1); s11.SayHello(); string strs2 = JsonUtility.ToJson(s2); print(strs2); Person s22 = JsonUtility.FromJson(strs2); s22.SayHello(); }}//必须加上,不然不会被序列化[Serializable]public class Person{ public string Name; public int Age; private bool Sex; public Person Brother; public Person(string name, int age, bool sex) { this.Name = name; this.Age = age; this.Sex = sex; } public void SayHello() { string sexstr = Sex ? “男生” : “女生”; if (Brother == null) { MonoBehaviour.print(“大家好,我是:” + Name + “,今年” + Age + “了。。。是一个” + sexstr + “,我没有哥哥/(ㄒoㄒ)/~~”); } else { MonoBehaviour.print(“大家好,我是:” + Name + “,今年” + Age + “了。。。是一个” + sexstr + “,我哥哥是” + Brother.Name + “。。”); } }}为什么这样写得不到正确结果了?

      • 刘云肖 说:

        using System;using UnityEngine;public class JSONTest : MonoBehaviour{ void Start() { Person s1 = new Person(“张三”, 18, true); Person s2 = new Person(“李四”, 20, true); s1.Brother = s2; s1.SayHello(); s2.SayHello(); string strs1 = JsonUtility.ToJson(s1); print(strs1); Person s11 = JsonUtility.FromJson(strs1); s11.SayHello(); string strs2 = JsonUtility.ToJson(s2); print(strs2); Person s22 = JsonUtility.FromJson(strs2); s22.SayHello(); }}//必须加上,不然不会被序列化[Serializable]public class Person{ public string Name; public int Age; private bool Sex; public Person Brother; public Person(string name, int age, bool sex) { this.Name = name; this.Age = age; this.Sex = sex; } public void SayHello() { string sexstr = Sex ? “男生” : “女生”; if (Brother == null) { MonoBehaviour.print(“大家好,我是:” Name “,今年” Age “了。。。是一个” sexstr “,我没有哥哥/(ㄒoㄒ)/~~”); } else { MonoBehaviour.print(“大家好,我是:” Name “,今年” Age “了。。。是一个” sexstr “,我哥哥是” Brother.Name “。。”); } }}为什么这样写得不到正确结果了?

  8. 刘扬 说:

    楼主,按照你的写法LOG出来,数据是空的。

  9. 糖豆豆 说:

    http://paste.ubuntu.com/14278353/

    Unity5.3中的json似乎还不支持list

    JsonUtility输出
    {“name”:”老大”,”level”:10}
    dotnetJson输出
    {“name”:”老大”,”level”:10,”skillID”:[{“skillID”:1001,”desc”:”小身材”},{“skillID”:1002,”desc”:”大拳头”},null]}

  10. 振博 说:

    5.3是什么版本?beta吗?为啥我更新到最新的是5.2.3

  11. JsonUtility.FromJson(json);这种用法,应该是反射生成的吧,mac也可以用的吗

  12. 肖行武 说:

    [good]这样子就不用LitJson这些小插件了吧…

留下一个回复

你的email不会被公开。