LitJson解析遇到的坑

今天在些项目的时候,遇到一个坑,现在跟大家分享一下

我遇到的错误是MissingMethodException: Method not found: 'Default constructor not found...ctor() of bagItemJson'. 大概的意思就是说没有找到什么方法

下面我们来看看为什么会遇到这个问题

首先先写一个类

public class BagItem   //一个类,用来表示背包里面的装备

{

     public string name;

     public int level;

     public BagItem(string name, level)

     {

          this.name = name;

          this.level = level;

      }

}

我们可能知道,LitJson里面有一个方法可以直接把对象转化为Json字符串,当然也有一个方法可以把对象转化成的字符串在转化为对象, 例如

   BagItem bi =  JsonMapper.ToObject<BagItem>(data.ToString());  其中 data是JsonData类型的

这样就可以吧Json字符串转化为对象了

但这样看的话,是完全正确的,没有问题的,但是在运行的时候,就出现了上面的错误,当时我问了很多人,后来对比发现,有的人是可以这样转化成功的,他们写的类和我的唯一不一样的地方就是构造函数,我是用构造函数赋值,初始化,但是他们是先实例化,然后在一个一个给每一个属性赋值,这个就是问题的关键了,因为我自己写了一个构造函数,把默认的构造函数给私有化了,这样的话在上面的转化为对象的时候,就找不到构造函数了,所以就转化不了实例了,这时候就会出现找不到该方法,实际上是找不到构造函数了

另外,值得一说的是,在转化为对象的方法里面,应该是先实例化出来一个对象,然后在给每个对象赋值,这时候的实例化是用默认构造函数实例化的,并不是用自己的构造函数实例化的,所以上面的错误只需要把默认构造函数给加上,写成Public就可以了

原文地址:https://www.cnblogs.com/ZhiXing-Blogs/p/4914459.html