Bien désérialiser mais pas sérialiser avec json.net

Nous avons quelques fichiers de configuration qui ont été générés par la sérialisation des objets C# avec Json.net.

Nous aimerions migrer une propriété de la sérialisés classe loin d'être une simple enum d'une propriété dans une propriété de classe.

Un moyen facile de le faire, serait de laisser la vieille enum bien sur la classe, et prendre des dispositions pour Json.net pour lire cette propriété lorsque l'on charge le fichier config, mais pas à l'enregistrer de nouveau la prochaine fois que nous sérialiser l'objet. Nous allons faire face à la production de la nouvelle classe à partir de l'ancien enum séparément.

Est-il un moyen simple de marque (avec attributs) d'une propriété d'un objet de C#, de sorte que Json.net il sera ignoré SEULEMENT lors de la sérialisation, mais assister lors de la désérialisation?

  • Que penser d'un convertisseur personnalisé : vous pouvez l'utiliser comme un attribut sur votre propriété, remplacer ReadJson et WriteJson avec différents leurs comportements, non ? Exemple (pas exactement ce que vous avez besoin, mais...) weblogs.asp.net/thangchung/archive/2010/08/26/...
  • attribut OnDeserialized peut être un travail autour de vous
  • Ne pourrait-il pas être possible à l'aide de la " [JsonIgnore]' attribut?? james.newtonking.com/archive/2009/10/23/...
  • Êtes-vous en mesure de préciser comment cela peut être utilisé que dans une seule direction, comme par le dernier paragraphe de la q?
  • Il est possible d'utiliser [JsonIgnore] en combinaison avec un secondaire privé setter qui est décoré avec un [JsonProperty] attribut. Il ya un couple d'autres solutions simples ainsi. J'ai ajouté une description détaillée.
  • Après 1 an, ma réponse ci-dessous n'a qu'un seul vote, mais si vous retirez de l'obtenir; à partir de la propriété, le JSON serialiser ne pouvez pas le lire, donc il ne pourra plus exporter de l'ancienne valeur.

InformationsquelleAutor Will Dean | 2012-07-19