"Newtonsoft.Json.JsonSerializationException unable to find constructor to use for types" 反序列化时出错 class

"Newtonsoft.Json.JsonSerializationException unable to find constructor to use for types" error when deserializing class

我正在 Xamarin Android 开发应用程序。我有一个闪屏,我在其中序列化 class 并使用 Intent 将其传递给 MainActivity。当我尝试在 MainActivity 中反序列化它时,我收到一条错误消息:

"SerializationException unable to find constructor to use for types" 

序列化:

void LoadData() {
    Currency currency = new Currency(this);
    intent = new Intent(this, typeof(MainActivity));
    intent.PutExtra("currency", Newtonsoft.Json.JsonConvert.SerializeObject(currency));
    StartActivity(intent);
}

反序列化:

cur = Newtonsoft.Json.JsonConvert.DeserializeObject<Currency> (Intent.GetStringExtra("currency")); // I get the error here

Class构造函数:

public Currency(Context context) {
    thiscontext = context;
}

我在将参数 Context context 添加到构造函数后开始遇到此问题。 是什么原因造成的?我该如何解决? 有参数的serialize/deserializeclass可以吗?

您需要在 Currency class 中有一个空构造函数才能对其进行反序列化。

另一件事可能会导致此问题,如果您在 android 项目中启用了完整链接。您需要使用

保留 class 和成员
[Runtime.Preserve(AllMembers = true)]
public class Currency
{}