unity 3D之调用JsonFx遇到的问题及解决

在unity中传递数据是,Json使用时非常广泛的。

在学习使用Json中遇到了一个小问题,但是这个问题却不容易被发现,所以我把这个问题列出来希望帮助其他初学者。

问题描述:

JsonTypeCoercionException: Only objects with default constructors can be deserialized. (People)
JsonFx.Json.TypeCoercionUtility.InstantiateObject (System.Type objectType, System.Collections.Generic.Dictionary`2& memberMap)
JsonFx.Json.JsonReader.ReadObject (System.Type objectType)
JsonFx.Json.JsonReader.Read (System.Type expectedType, Boolean typeIsHint)
JsonFx.Json.JsonReader.Deserialize (Int32 start, System.Type type)
JsonFx.Json.JsonReader.Deserialize (System.String value, Int32 start, System.Type type)
JsonFx.Json.JsonReader.Deserialize[People] (System.String value)
JsonTest.Start () (at Assets/Scripts/JsonTest.cs:15)

当我使用如下结构的时候,就会报出上面的错误。大意就是在定义People类是没有按照标准去定义。

 

于是把代码改成后面的:

改成这样后,在json解析时就能够很好的解析出来。

这里两个People应该是使用到了多态的概念,在Json解析时,也是同样按照这种格式来定义的,所以在定义需要转换成Json的时候,要注意类的结构。

然而在Unity 中不止有这一种结果的类可以被json序列化。在unity5.3版本中,unity已经将json集成到unity中。

我们在unity编程中有时候并不想去考虑json序列化的类的内容,只是想单纯的做一个数据类,那么我们不必要按照上面所示的那种结构来编辑类。

[SerializeField]
public class I{
    string name;
    string sex;
}

这样,在创建这个类的实例后,用json的序列化,将这个类转化成json字符串。

-----------------------------------------------------2016年12月18日更新--------------------------------------------------------------------------

现在这个问题已经被插件解决并不存在了。

-------------------------------------------------------------------------------------------------------------------------------------------------------

THISSKY出品,原文链接:http://www.cnblogs.com/zhuhongjongy/p/4974473.html 

 

posted @ 2015-11-18 14:43  thissky  阅读(1300)  评论(0编辑  收藏  举报