J'ai écrit peu de classes (contrats de données et contrats de service) dans WCF et j'essaie de sérialiser et de désérialiser à Json. Si j'ai besoin de la structure JSON suivante, comment créerai-je le (s) Datacontract (s):
[DataContract] public class Response { [DataMember] public string locations { get; set; } [DataMember] public string error{ get; set; } }
3 Réponses :
visitez http://json.codeplex.com/ . Utilisez pour activer votre objet en chaîne JSON. Utilisez P> JsonConvert.PopulateObject
Les objets complets que vous recherchez doivent être structurés comme suit: Vous devez configurer la hiérarchie de l'objet, comme indiqué par le le Le site peut être déroutant, car il n'y a pas d'exemples simples, mais s'il vous plaît examiner introduisant JSON pour une compréhension de base de la syntaxe . Un autre bon site que je suis venu, avec quelques exemples simples, était JSON et XML Serialization dans ASP.NET Web API . P> Grâce à certaines directives de Vittore, j'ai remarqué que pour construire la correspondance exacte à votre sortie JSON, vous aura besoin d'objets comme: p> Je les ai ajoutés dans un deuxième bloc de code ici, car une telle structure semble inutilement compliquée. Toutefois, si vous êtes dans une position où vous pouvez modifier la sortie attendue de votre JSON, j'irais avec le premier bloc, avec la modification supplémentaire de la création des deux colonnes code> code> dans Ces types ont été créés pour prendre en charge un service similaire à celui de la configuration à Service WCF Pour revenir à JSON et testé à l'aide du code suivant: p> détails sur DatacontractjsonSerializer p> Notez également que si vous avez la possibilité de configurer une place reposante. Service Web, vous pouvez ensuite suivre les directives de Comment créer un service réparateur JSON WCF en 60 secondes . P> P> { code> et
et
et
} code>, ainsi que les propriétés ienumerables / array, comme indiqué par le
[ code> et
] code> à partir de votre sortie JSON souhaitée. P>
int Code> Types. P>
Je préférerais nommer des classes et des propriétés de manière appropriée selon les normes de codding C # (I E Emplacement non de l'emplacement) et utilisez des indications dans Datamember, etc. Attributs, c'est-à-dire [Datamember (nom = "Emplacement")] Emplacement de la classe public Code>
Une autre chose que je viens de remarquer que l'un ou l'autre Starter Starter a une erreur par exemple JSON JSON BAYLOAD, ou vous devrez introduire une autre classe, car il dispose de l'objet emplacements code> avec la propriété
emplacement code> qui est Array de quelque chose (apparemment de ce que vous avez appelé
emplacement code> objet dans votre extrait C #)
Merci gars pour l'aide. Mike, basé sur la méthode de sérialisation Avez-vous mis en œuvre les structures ci-dessus? La sérialisation .NET ou JSON.net? Parce que je me demandais si cela peut être fait à l'aide de la sérialisation native.
@Mike j'ai utilisé le deuxième bloc que vous avez mentionné à l'exception du contrat de données "ResponseParent". Je reçois la sortie similaire à celle-ci: {"Réponse": {"Emplacements": [{"ID": "3", "Nom": "Quelque chose", "StatutId": "3"}, {"Id" : "5", "nom": "quelque chose", "StatutId": "8"}], "ErrorCode": "OK"}} Quels changements dois-je apporter pour ajouter une balise "Emplacement" pour chacun de "ID, Nom, statut de statut "paires? Comme ce qui suit: "Emplacements": {"Lieu": [{....}, "Lieu": [{...
@Pavanwelihinda Je pense que vous voulez dire "emplacements": [{"Lieu": {...}}, "Emplacement": {...}}] code>. Notez comment vous modifiez l'arrangement hiérarchique du
[ code>
] code>. Que ferait ce changement dans votre modèle d'objet? Dans ce cas,
réponse code> aurait la matrice de
EmplacementCollectionInmermediate code> et
EmplacementCollectionInmermedate code> n'aurait qu'une seule adresse
code>, tandis que
Datamember code> Les noms resteraient les mêmes.
J'espère que vous regardez toujours ce fil. J'aimerais voir ces contrats de données épinés. Je travaille sur un gestionnaire de transactions de base de données utilisant JSON. Je viens de commencer à lancer de la boue à cette clôture de fil de poulet et plus se colle, pardonnez à la métaphore. Je suis commencé à attraper certains des aspects de la sérialisation JSON, mais j'aimerais voir l'énumération de l'emplacement épiniée. Merci les gars.
Une fois que vous avez la structure exacte, attribuée, vous pouvez également utiliser JavasCrriptserializer classe à partir de Quelque chose comme ça fonctionnera: p> encore plus simple que d'utiliser Vous pouvez également ajouter personnalisé JavascriptConverter S, ce qui permet de mettre en place Un moyen plus agréable de JSON dynamique avec une relative aisance. P> L'analyse dynamique est également très simple de cette façon: p> System.web.script.Sériorialisation code> (car .net 3.5)
DatacontractSerializer code>, bien que je ne suis pas tout à fait sûr de ses réserves. Je l'ai utilisé plusieurs fois sans problème. P>