J'essaye d'analyser certains JSON en utilisant la bibliothèque JSon.Net. La documentation semble un peu clairsemée et je ne sais pas comment accomplir ce dont j'ai besoin. Voici le format du JSON que je dois analyser.
{
"displayFieldName" : "OBJECT_NAME",
"fieldAliases" : {
"OBJECT_NAME" : "OBJECT_NAME",
"OBJECT_TYPE" : "OBJECT_TYPE"
},
"positionType" : "point",
"reference" : {
"id" : 1111
},
"objects" : [ {
"attributes" : {
"OBJECT_NAME" : "test name",
"OBJECT_TYPE" : "test type"
},
"position" : {
"x" : 5,
"y" : 7
}
} ]
}
Les seules données dont j'ai vraiment besoin sont les éléments du tableau des objets. Est-il possible pour moi d'analyser cela avec quelque chose comme JSonTextReader et de simplement extraire les choses que je veux, comme OBJECT_TYPE et les positions x et y? Je n'arrive pas à me mettre JSonTextReader
au travail comme je le souhaite et je trouve peu ou pas d'exemples d'utilisation.
Il semble que la sérialisation d'abord, puis l'utilisation de LINQ avec mon objet serait idéale et chaque exemple que je trouve traite de la sérialisation du JSON en premier, mais je ne suis pas sûr de la façon dont je créerais un objet pour cette structure. En particulier, le tableau d'objets qui devrait être quelque chose comme une liste de paires d'objets d'attribut et de position. Je n'ai aucune idée de la façon dont je coderais mon objet afin que JSon.Net sache comment sérialiser cela.
J'ai pensé que je pourrais écrire mon propre analyseur simple pour simplement extraire tout ce dont j'ai besoin dans un objet d'attributs que j'ai créé, mais j'ai peu de chance.
Espérons que tout cela a du sens, des idées?
la source
XElement
qui me permettrait d'utiliser LINQ sur les objets JSON?Éditer: Merci Marc, lisez le problème struct vs class et vous avez raison, merci!
J'ai tendance à utiliser la méthode suivante pour faire ce que vous décrivez, en utilisant une méthode statique de JSon.Net:
Lien: sérialisation et désérialisation de JSON avec Json.NET
Pour la liste des objets, puis-je suggérer d'utiliser des listes génériques constituées de votre propre petite classe contenant
attributes
etposition
classe. Vous pouvez utiliser laPoint
structure dansSystem.Drawing
(System.Drawing.Point
ouSystem.Drawing.PointF
pour les nombres à virgule flottante) pour vous X et Y.Après la création d'un objet, il est beaucoup plus facile d'obtenir les données que vous recherchez par rapport à l'analyse de texte que vous regardez autrement.
la source
(Cette question est apparue en haut des résultats d'un moteur de recherche, mais j'ai fini par utiliser une approche différente. Ajout d'une réponse à cette ancienne question au cas où d'autres personnes ayant des questions similaires liraient ceci)
Vous pouvez résoudre ce problème avec Json.Net et créer une méthode d'extension pour gérer les éléments que vous souhaitez boucler:
Et puis accédez aux données comme ceci: (scénario: écriture sur console):
la source
la source
[
ou]
(tableau de délimitation ou structures de liste).Vous utilisez la
JSON
classe, puis appelez laGetData()
fonction.la source