0
votes

NEWTONSOFT JSON Serialize / désériorize Propriété imbriquée

J'ai la structure de classe suivante xxx pré>

i définissez les valeurs suivantes: p> xxx pré>

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"
}


0 commentaires

4 Réponses :


0
votes

Le JSON supérieur n'est pas pareil avec ce dernier. La classe principale ne peut pas être sérialisée comme {"mystringvalue": "valeur de chaîne", "myClassValue": "test"} sans conversion. xxx

alors vous pouvez le sérialiser .


0 commentaires

0
votes

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: xxx


0 commentaires

0
votes

Vous avez deux choix que l'on est ce que @SImonare a mentionné

ou modifier le structeur de votre classe MAINCLASC à xxx

et maintenant vous peut simplement choisir quoi utiliser comme myClassValue xxx

ou xxx


0 commentaires

2
votes

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: xxx pré>

et vous utiliseriez ensuite le jsonconverterattribute code> avec ce convertisseur: p> xxx pré>

Ceci permettrait ensuite toutes les sérialisations de 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();
}


1 commentaires

Merci exactement ce que je cherchais. Je l'ai ajouté dans ma configuration globale: Paramètres.Converters.add (New CustomEnMenumjsonconverter ());