Comment faire pour convertir au format XML ou JSON XML en JSON?
J'ai commencé à utiliser Json.NET pour convertir une chaîne de caractères au format JSON pour objet ou vice-versa. Je ne suis pas sûr que dans l'Json.NET cadre, est-il possible de convertir une chaîne en JSON au format XML et vice versa?
- Notez que StaxMan dit, s'il y a ex. l'espace dans le nœud d'élément, il sera ignoré par xml. Pour ex. "Identification de l'élève": 11000 ne seront pas dans le résultat xml bcuz de l'espace dans le nom de la propriété. xml n'accepte pas d'avoir de l'espace à l'intérieur de l'Élément de Nœud.
Vous devez vous connecter pour publier un commentaire.
Oui. À l'aide de la JsonConvert classe qui contient des méthodes d'aide pour ce but précis:
Documentation ici: la Conversion entre JSON et XML avec Json.NET
Oui, vous peut le faire (je le fais), mais Être conscient de certains paradoxes lors de la conversion, et de gérer de manière appropriée. Vous ne pouvez pas automatiquement sont conformes à l'ensemble de l'interface de possibilités, et il y a peu de prise en charge intégrée dans le contrôle de la conversion de nombreux JSON les structures et les valeurs ne peuvent pas être automatiquement convertis dans les deux sens. Gardez à l'esprit que je suis en utilisant les paramètres par défaut avec Newtonsoft librairie JSON et MS bibliothèque XML, de sorte que votre kilométrage peut varier:
XML -> JSON
{}
OU imbriqués-tableau[ {} {} ...]
selon si il y a seulement un ou plus d'un enfant XML-élément. Vous n'en consomment ces deux différemment en JavaScript, etc. Différents exemples de XML conforme à la le même schéma peut produire différents JSON structures de cette façon. Vous pouvez ajouter l'attribut json:Array= "true" à votre élément de cette solution de contournement dans certains (mais pas nécessairement tous) des cas.Une nouvelle mise à jour des changements de cela (Merci à Jon Histoire pour la pointer out): https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_NullValueHandling.htm
JSON -> XML
N'hésitez pas à mentionner toutes les autres questions que vous avez remarqué, j'ai développé mes propres routines personnalisées pour la préparation et le nettoyage des cordes comme je le convertir en arrière et en avant. Votre situation peut ou ne peut pas appeler pour prep/de nettoyage. Comme StaxMan mentionne, votre situation peut réellement besoin que vous de convertir entre les objets...cela pourrait entraîner des interfaces appropriées, et un tas de cas consolidés/etc pour gérer les mises en garde que je mentionne ci-dessus.
Vous pouvez faire ces conversions sont aussi avec la .NET Framework:
JSON XML: en utilisant Système.Moment de l'exécution.La sérialisation.Json
XML en JSON: en utilisant Système.Web.Script.La sérialisation
Je ne suis pas sûr qu'il y est point dans une telle conversion (oui, beaucoup à faire, mais surtout pour forcer une cheville carrée à travers des trous ronds) -- il est structurel d'adaptation d'impédance, et la conversion est figé. Je recommanderais donc à l'encontre de ce format à format transformations.
Mais si vous le faites, d'abord convertir de json pour objet, de l'objet xml (et vice versa pour inverser la direction). Faire la transformation directe conduit à laide de sortie, la perte d'information, ou peut-être les deux.
Merci pour David Brown,réponse. Dans mon cas de JSON.Net 3.5, le convertir méthodes sont sous la JsonConvert statique de la classe:
J'ai cherché longtemps pour trouver une solution de rechange code de la solution retenue dans l'espoir de ne pas utiliser un assembly externe/projet. Je suis venu avec la suite merci pour le code source de la DynamicJson projet:
Remarque: je voulais un XmlDocument plutôt que d'un XElement pour xPath fins.
En outre, ce code n'est évidemment va de JSON en XML, il existe différentes façons de faire le contraire.
Voici tout le code c# pour convertir du xml en json
Pour convertir une chaîne de caractères XML en JSON, il suffit d'appeler XmlToJSON() comme ci-dessous.
Essayer cette fonction. Je viens d'écrire et n'en ai pas eu beaucoup de chance de le tester, mais mes essais préliminaires sont prometteurs.
Ici est un extrait de simple qui convertit un XmlNode (de manière récursive) dans une table de hachage, et des groupes de plusieurs instances d'un même enfant dans un tableau (comme une liste de tableaux).
La table de hachage est généralement accepté pour convertir en JSON par la plupart des JSON bibliothèques.
Cinchoo ETL - une bibliothèque open source disponible pour faire la conversion de Xml en JSON facilement avec quelques lignes de code
Xml -> JSON:
JSON -> Xml:
Caisse CodeProject article pour de l'aide supplémentaire.
Disclaimer: je suis l'auteur de cette bibliothèque.
J'ai fait comme David Brown a dit, mais j'ai eu l'exception suivante.
Une solution serait de modifier le fichier XML avec un élément racine, mais qui n'est pas toujours nécessaire et pour un flux XML, il peut ne pas être possible. Ma solution ci-dessous:
Exemple XML qui génère l'erreur:
J'ai utilisé les méthodes ci-dessous pour convertir au format JSON en XML
Et
J'ai utilisé le nom de la classe Point pour représenter les éléments
Il fonctionne....
Pour convertir
JSON
chaîne deXML
essayez ceci:Pour convertir
XML
àJSON
essayez ceci: