Unity3d的5.4版使用JsonUtility.FromJson序列化JSON,多次使用后数据不更新
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3d的5.4版使用JsonUtility.FromJson序列化JSON,多次使用后数据不更新相关的知识,希望对你有一定的参考价值。
首先,我第一次获取的json是这样的:
json = "books":[],"pagecount":8,"curpage":0,"err":0,"msg":"success"
通过JsonUtility.FromJson<Books>(json); 成功解析。
然后,我再次访问服务器,获取到的json是这样的
json = "books":[],"pagecount":8,"curpage":1,"err":0,"msg":"success"
再次通过JsonUtility.FromJson<Books>(json);来进行解析,这次就不对了,读取出来的curpage 始终还是保持前一次读取的结果 为 0.
后来,我经历N次访问服务器,获取到json:
json = "books":[],"pagecount":8,"curpage":N,"err":0,"msg":"success"
但是使用FromJson解析出来 curpage 始终是 0 。
我跟踪调试的时候看到在进行序列化之前,json文本中的值确实是新获取到的值,而用来存放结果的对象object也是new出来的,里面也不会有旧值,但是为什么FromJson之后,把旧值丢进来了呢?
而在json中,books数组里面的值却可以正确得到。
补充:
我访问服务器提取json是使用 WWW。
WWW w = new WWW(url);
json = w.text;
求教高手,在线等。谢谢。
Unity -JsonUtility的使用
今天,为大家分享一下unity上的Json序列化,应该一说到这个词语,我们肯定会觉得,这应该是很常用的一个功能点;诚然,我们保存数据的时候,也许会用到json序列化,所以,我们有必要快速了解一下它的简单用法。【小白篇】
官方文档:https://docs.unity3d.com/Manual/JSONSerialization.html
1.首先,我们直接新建unity项目,然后新建一个JsonUtilityBehaviour.cs 组件测试类;
JsonUtilityBehaviour.cs 代码如下:
1 using UnityEngine; 2 using System; 3 4 public class JsonUtilityBehaviour : MonoBehaviour { 5 6 People _p; 7 string _toJsonStr; 8 People _fromP; 9 10 void OnGUI() 11 { 12 13 if (GUI.Button(new Rect(100, 100, 100, 50), "Json 序列化")) 14 { 15 NewPeople(); 16 _toJsonStr = JsonUtility.ToJson(_p); 17 } 18 GUI.Label(new Rect(100,150,200,50), _toJsonStr); 19 20 if (GUI.Button(new Rect(100, 200, 100, 50), "Json 解析")) 21 { 22 _fromP = JsonUtility.FromJson<People>(_toJsonStr); 23 } 24 GUI.Label(new Rect(100, 250, 200, 50), GetFromJsonStr()); 25 } 26 27 void NewPeople() 28 { 29 _p = new People(); 30 _p.Name = "HappyKing"; 31 _p.Age = 18; 32 } 33 34 string GetFromJsonStr() 35 { 36 string str = ""; 37 if (_fromP != null) 38 str = "我的名字叫" + _fromP.Name + ",今年" + _fromP.Age + "了!"; 39 return str; 40 } 41 42 } 43 44 [Serializable] 45 public class People 46 { 47 public string Name; 48 public int Age; 49 }
2.然后,我们可以直接运行编辑器看效果!
以上是关于Unity3d的5.4版使用JsonUtility.FromJson序列化JSON,多次使用后数据不更新的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D 学习从简单开始-JsonUtility的使用