Je reçois la réponse suivante d'un service WebService: Comment l'objet JSON doit-il ressembler à désérialiser cela? p> ou y a-t-il une autre façon d'obtenir le valeurs des propriétés? p> p>
4 Réponses :
Consultez ce site: http://json2cshaarp.com/ p>
Coller dans la chaîne JSON et il générera des cours pour vous. J'utilise généralement cela dans la main avec JSON.NET pour désherialiser une instance de l'objet racine. P>
Veuillez regarder le Json plus soigneusement et remarquer le foo.hugo.info code> et foo.fritz.task code> clés. Regardez maintenant ce que le site que vous avez suggéré généré pour la catégorie code> data code> est assez inutile.
Bon point. Je n'ai pas eu de problème avec le site avant. +1 pour votre meilleure réponse.
avec le dans cet exemple, j'ai utilisé un dictionnaire json.net code> bibliothèque C'est assez trivial: dictionnaire foo.hugo.info code> et foo.fritz.task code>) Parce qu'ils contiennent des noms qui ne peuvent pas être utilisés dans un membre .NET. P> P>
Une raison pour le bowvote? S'il vous plaît laissez un commentaire lorsque la descente expliquait pourquoi cette réponse est fausse.
C'est exactement ce dont j'ai besoin! En outre, il utilise un dictionnaire et peut gérer plus de deux entrées de données. Merci!
Si vous utilisez VS2012 ou plus, vous pouvez effectuer ce qui suit:
public class Rootobject
{
public Data data { get; set; }
public bool success { get; set; }
}
public class Data
{
public FooHugoInfo foohugoinfo { get; set; }
public FooFritzTask fooFritzTask { get; set; }
}
public class FooHugoInfo
{
public string path { get; set; }
public int minVersion { get; set; }
public int maxVersion { get; set; }
}
public class FooFritzTask
{
public string path { get; set; }
public int minVersion { get; set; }
public int maxVersion { get; set; }
}
Tout exemple de code sur quel sériialiseur vous utiliseriez pour désérialiser le JSON montré dans l'op pour ces classes? Je suis particulièrement intéressé par le foohugoinfo code> et FOOFRITZTASK code> Propriétés.
Cela peut ne pas répondre à la question de l'OP pleinement, mais je dois dire ... Mind = Blown. Je n'avais aucune idée de ce qui se cache sous le menu Edition jusqu'à présent.
Ce n'est pas flexible si une troisième variante est ajoutée, vous devez créer une autre classe et ajouter ceci à la classe code> de données code> en tant que propriété.
Vous pouvez utiliser édition: même classe pour DataContractJsonSerializer code> info code> et tâche p > p>
Vous auriez pu utiliser la même classe pour info code> et code>. Autre que cela, bonne et complète réponse, +1.
Cela fonctionne bien, mais ce que j'ai oublié d'écrire, c'est que les données: est dynamique. Il peut s'agir de tout nombre d'articles différents, mais à chaque fois avec le chemin, la minversion et les membres Maxversion. Seuls les noms (foo.hugo.info / foo.fritz.task) peuvent varier.
Voulez-vous le désérialiser?
Que voulez-vous faire avec les informations une fois que vous l'avez dans votre programme? Bien que vous puissiez le désérialiser dans un objet, cela pourrait être du travail que vous pouvez éviter, en fonction de votre objectif.
Vous avez déjà un objet JSON. Voulez-vous dire comment le traduire en un objet C #? Si oui, faites une classe avec les propriétés
chemin code>,minversion code>,maxversion code> et utilisez quelque chose comme JSON.NET pour désespérer.@Tragedian - Je veux avoir accès aux propriétés. Quelque chose comme data.foohugoinfo.path. Mais je n'ai que cette chaîne et je ne veux pas analyser ceci.