首页 > 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
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

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

  1. 张吉元 说:

    “buildingCost”: [
    [
    30000,
    60000,
    140000,
    160000,
    240000
    ],
    [
    40000,
    80000,
    150000,
    170000,
    250000
    ],
    [
    50000,
    100000,
    160000,
    180000,
    260000
    ],
    [
    60000,
    120000,
    170000,
    190000,
    270000
    ],
    [
    70000,
    140000,
    180000,
    200000,
    300000
    ]
    ],怎么解析,求助

  2. 小灰 说:

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

  3. 蔡怡波 说:

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

  4. 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)

  5. Jager 说:

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

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

  7. 赵川 说:

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

  8. 九州散人 说:

    能解析嵌套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 “。。”); } }}为什么这样写得不到正确结果了?

  9. 刘扬 说:

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

  10. 糖豆豆 说:

    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]}

  11. 振博 说:

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

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

  13. 肖行武 说:

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

留下一个回复

你的email不会被公开。