J'ai la structure de classe suivante i définissez les valeurs suivantes: p> quand je serai sérialiser la classe "mainclass" i Obtenez le JSON suivant (qui est absolument clair pour moi): P> {
"MyStringValue":"String Value",
"MyClassValue": "Test"
}
4 Réponses :
Le JSON supérieur n'est pas pareil avec ce dernier. La classe principale ne peut pas être sérialisée comme alors vous pouvez le sérialiser . p> p> {"mystringvalue": "valeur de chaîne", "myClassValue": "test"} code> sans conversion.
Pour cela, vous avez besoin d'une nouvelle classe pour la désérialisation. Toutefois, pour la sérialisation, vous pouvez simplement créer un type anonyme à la volée, comme:
Vous avez deux choix que l'on est ce que @SImonare a mentionné
ou modifier le structeur de votre classe et maintenant vous peut simplement choisir quoi utiliser comme ou p> MAINCLASC code> à p>
myClassValue code> p>
Un moyen d'y parvenir est d'utiliser un personnalisé JSONCONVERTER Avec le JSONCONVERTERATTRIBUT . Par exemple, vous pouvez créer un convertisseur personnalisé pour votre classe: et vous utiliseriez ensuite le Ceci permettrait ensuite toutes les sérialisations de jsonconverterattribute code> avec ce convertisseur: p>
MAINCLASCLASS CODE> d'utiliser la méthode
ErrierJson code> de
secondClassconverter code>: p>
static void Main(string[] args)
{
var json = "{ \"MyStringValue\":\"String Value\", \"MyClassValue\": \"Test\" }";
var decodedJson = JsonConvert.DeserializeObject<MainClass>(json);
Console.WriteLine($"decodedJson.MyStringValue: {decodedJson.MyStringValue}");
Console.WriteLine($"decodedJson.MyClassValue.Value: {decodedJson.MyClassValue.Value}");
Console.ReadLine();
}
Merci exactement ce que je cherchais. Je l'ai ajouté dans ma configuration globale: Paramètres.Converters.add (New CustomEnMenumjsonconverter ());