今天在些項目的時候,遇到一個坑,現在跟大家分享一下
我遇到的錯誤是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就可以了