Unity中使用json序列化失败

Posted AByte

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中使用json序列化失败相关的知识,希望对你有一定的参考价值。

  • 问题
//为什么用json序列化这样没得问题
 Dictionary<string, int> dic = new Dictionary<string, int>();
 dic.Add("1", 1);
 string strJson = LitJson.JsonMapper.ToJson(dic);

//这样有问题 
 Dictionary<int, int> dic2 = new Dictionary<int, int>();
 dic2.Add(1, 1);
 string strJson2 = LitJson.JsonMapper.ToJson(dic2);
 Debug.Log(strJson2);
  • 解决方法

json 序列化时不支持结构体,比如Unity 中的Vector3类型不支持,所以我们要自己转型以下

  

1 //Vector3 里面原来是float类型,但是 json 不支持float类型,所以用 double类型
2 public class Vector3Obj
3 {
4      double x;
5      double y;
6      double z;
7 }

 

  • 使用json的注意事项
  1. - JSON字符串里的非数字型键值没有双引号
  2. - JSON中存在\t这样的制表符,看起来和空格一样,但是就是因为它存在校验不通过,需要去掉
  3. - 编辑器有bom头也会造成

以上是关于Unity中使用json序列化失败的主要内容,如果未能解决你的问题,请参考以下文章

Unity中使用JsonUtility.FromJson反序列化JSON

unity Restsharp Api Json 序列化和反序列化

无法在 Unity 5.4 中使用 JsonUtility 反序列化 JSON。子集合始终为空

使用 Unity JsonUtility 反序列化 JSON 数组无法获取序列化值

来自 json 的原型反序列化将在新字段或未知枚举值上失败

使用 Schema 验证无效的 json 数据不会因反序列化而失败