“Newtonsoft.Json.JsonSerializationException impossible de trouver le constructeur à utiliser pour les types” erreur lors de la désérialisation de classe
Je développe une application en Xamarin
Android. J'ai un écran de démarrage où je sérialiser une classe et de le passer à MainActivity
à l'aide de Intent
. Lorsque j'essaie de désérialiser dans MainActivity
je reçois un message d'erreur :
"SerializationException unable to find constructor to use for types"
De la sérialisation :
void LoadData() {
Currency currency = new Currency(this);
intent = new Intent(this, typeof(MainActivity));
intent.PutExtra("currency", Newtonsoft.Json.JsonConvert.SerializeObject(currency));
StartActivity(intent);
}
Désérialisation :
cur = Newtonsoft.Json.JsonConvert.DeserializeObject<Currency> (Intent.GetStringExtra("currency")); //I get the error here
Constructeur de la classe :
public Currency(Context context) {
thiscontext = context;
}
J'ai commencé à vivre ce problème après j'ai ajouté le paramètre Context context
du constructeur.
Ce qui a causé cela? Comment puis-je le résoudre?
Est-il possible de sérialiser/désérialiser classe qui a des paramètres?
Bien quelle est la valeur que vous attendez-vous la désérialisation de passer à ce constructeur? Avez-vous vraiment ce paramètre pour désérialiser?
Autant que je sache, par défaut ctor pour la Devise de la classe est absente, et c'est pourquoi vous êtes à sortir du cette erreur; Si vous creare un défaut ctor (sans paramètre), je suis sûr que vous n'obtiendrez pas ce problème
désolé, mais je n'ai pas votre question, vous voulez dire que si j'ai besoin de ce paramètre dans ma classe?
Est-ce à dire que je ne peux pas sérialiser/désérialiser classe qui a des paramètres?
Comment êtes-vous via ce paramètre? Pourquoi avez-vous besoin d'un contexte?
Autant que je sache, par défaut ctor pour la Devise de la classe est absente, et c'est pourquoi vous êtes à sortir du cette erreur; Si vous creare un défaut ctor (sans paramètre), je suis sûr que vous n'obtiendrez pas ce problème
désolé, mais je n'ai pas votre question, vous voulez dire que si j'ai besoin de ce paramètre dans ma classe?
Est-ce à dire que je ne peux pas sérialiser/désérialiser classe qui a des paramètres?
Comment êtes-vous via ce paramètre? Pourquoi avez-vous besoin d'un contexte?
OriginalL'auteur Nika Kurdadze | 2015-06-26
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'avoir un constructeur vide dans la Devise de la classe pour désérialiser.
OriginalL'auteur IdoT
Une autre chose qui peut provoquer ce problème est si vous avez un plein liaison activée dans votre projet android. vous avez besoin de conserver de classe et les membres à l'aide de
OriginalL'auteur batmaci