Unity5.3 的一项新功能就是Json的序列化,支持嵌套使用,可以把json字符串转成对象,把对象转成json字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
using UnityEngine; using UnityEditor; using System.Collections; using System; public class NewBehaviourScript : MonoBehaviour { void Start () { MyObject myObject = new MyObject(); myObject.name = "雨松MOMO"; myObject.newOjbect = new MyNewObject(){level =100}; string json = JsonUtility.ToJson(myObject); Debug.Log(json); myObject = JsonUtility.FromJson<MyObject>(json); Debug.Log(myObject.name +" " + myObject.newOjbect.level); JsonUtility.FromJsonOverwrite(json,myObject); } } [Serializable] public class MyObject { public string name; public MyNewObject newOjbect; } [Serializable] public class MyNewObject { public int level; } |
目前我用的是测试版。 遗憾的是还不支持字典 还有 Hashtable
或者试试这个人的方法, http://kou-yeung.hatenablog.com/entry/2015/12/31/014611
- 本文固定链接: https://www.xuanyusong.com/archives/3763
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
“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
]
],怎么解析,求助
这不是json格式吧。。
Jsonutility 怎么解析 “[{“id”,”1″},{“id”,”2″},{“id”,”3″}]
怎么把json数据保存到本地啊,有什么搞笑的方法吗,一起写下吧
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)
请问一下,在一个序列化的类里使用了,[Serializable]public class Serialization : ISerializationCallbackReceiver作为这个类的一个属性,然而tojson方法并不能不这个属性变为json,这是unity toJsonapi的问题么,如何解决这个问题呢,
http://forum.china.unity3d.com/thread-20934-1-1.html问题解决了
http://forum.china.unity3d.com/thread-20934-1-1.html问题解决了
試試看(?▽`)https://www.douban.com/note/579946879/
泛型里可不可以写成List类型的,像这样JsonUtility.FromJson< List < T > >
可以,
如果在被序列化的类里面有个object的对象转换过后会丢失掉,遇到过么
能解析嵌套json吗? 文档说明少得可怜….
能。 不过不支持字典
unity5.x怎么解析json啊?
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 + “。。”); } }}为什么这样写得不到正确结果了?
試試看(´▽`)https://www.douban.com/note/579946879/
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 “。。”); } }}为什么这样写得不到正确结果了?
楼主,按照你的写法LOG出来,数据是空的。
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]}
你要在class上面加 [Serializable] unity 只支持序列化的
现在这个版本支持 object 下的 list 序列化 但是不支持 dictionary 的序列化。
字典一直都是不支持的 unity自己都不支持
现在有这个版本的支持就很不错了,至少能干掉json插件了
你要想做字典的话 可以存成两个list 然后用ISerializationCallbackReceiver 接口来赋值
[赞]
如果字典value 是List,这个有没有可行的方案呢?
5.3是什么版本?beta吗?为啥我更新到最新的是5.2.3
哦,没看到后面写的测试版~
JsonUtility.FromJson(json);这种用法,应该是反射生成的吧,mac也可以用的吗
文档上写的是全平台通用。。
[good]这样子就不用LitJson这些小插件了吧…
是的。