J'ai commencé à utiliser Json.NET pour convertir une chaîne au format JSON en objet ou vice versa. Je ne suis pas sûr dans le framework Json.NET, est-il possible de convertir une chaîne au format JSON au format XML et vice versa?
282
Réponses:
Oui. Utilisation de la classe JsonConvert qui contient des méthodes d'assistance dans ce but précis:
Documentation ici: Conversion entre JSON et XML avec Json.NET
la source
Oui, tu peux faire (je le fais), mais soyez conscient de certains paradoxes lors de la conversion et gérez-les de manière appropriée. Vous ne pouvez pas automatiquement vous conformer à toutes les possibilités d'interface et la prise en charge intégrée du contrôle de la conversion est limitée - de nombreuses structures et valeurs JSON ne peuvent pas être converties automatiquement dans les deux sens. Gardez à l'esprit que j'utilise les paramètres par défaut avec la bibliothèque Newtonsoft JSON et la bibliothèque MS XML, donc votre kilométrage peut varier:
XML -> JSON
{}
imbriqués OU des tableaux imbriqués[ {} {} ...]
selon qu'il n'y a qu'un ou plusieurs éléments enfants XML. Vous consommeriez ces deux choses différemment en JavaScript, etc. Différents exemples de XML conformes au même schéma peuvent ainsi produire des structures JSON réellement différentes. Vous pouvez ajouter l'attribut json: Array = 'true' à votre élément pour contourner cela dans certains cas (mais pas nécessairement tous).Une nouvelle mise à jour change cela (Merci à Jon Story de l'avoir signalé): https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_NullValueHandling.htm
JSON -> XML
N'hésitez pas à mentionner tout autre problème que vous avez remarqué, j'ai développé mes propres routines personnalisées pour préparer et nettoyer les cordes lors de mes conversions. Votre situation peut ou non nécessiter une préparation / un nettoyage. Comme le mentionne StaxMan, votre situation peut en fait exiger que vous convertissiez entre les objets ... cela pourrait impliquer des interfaces appropriées et un tas d'instructions de cas / etc pour gérer les mises en garde que je mentionne ci-dessus.
la source
Vous pouvez également effectuer ces conversions avec le .NET Framework:
JSON en XML: en utilisant System.Runtime.Serialization.Json
XML vers JSON: en utilisant System.Web.Script.Serialization
la source
Je ne suis pas sûr qu'il y ait un point dans une telle conversion (oui, beaucoup le font, mais surtout pour forcer une cheville carrée à travers un trou rond) - il y a une inadéquation de l'impédance structurelle et la conversion est avec perte. Je déconseille donc de telles transformations de format à format.
Mais si vous le faites, convertissez d'abord de json en objet, puis d'objet en xml (et vice versa pour la direction inverse). Faire une transformation directe entraîne une sortie moche, une perte d'informations, ou peut-être les deux.
la source
Merci pour la réponse de David Brown . Dans mon cas de JSON.Net 3.5, les méthodes de conversion sont sous la classe statique JsonConvert:
la source
J'ai cherché longtemps pour trouver un code alternatif à la solution acceptée dans l'espoir de ne pas utiliser d'assemblage / projet externe. J'ai trouvé ce qui suit grâce au code source du projet DynamicJson :
Remarque: je voulais un XmlDocument plutôt qu'un XElement à des fins xPath. De plus, ce code ne va évidemment que de JSON à XML, il existe différentes façons de faire le contraire.
la source
Voici le code c # complet pour convertir xml en json
Pour convertir une chaîne XML donnée en JSON, appelez simplement la fonction XmlToJSON () comme ci-dessous.
la source
Essayez cette fonction. Je viens de l'écrire et je n'ai pas eu beaucoup de chance de le tester, mais mes tests préliminaires sont prometteurs.
la source
Voici un extrait simple qui convertit un XmlNode (récursivement) en une table de hachage et regroupe plusieurs instances du même enfant dans un tableau (en tant que ArrayList). La table de hachage est généralement acceptée pour être convertie en JSON par la plupart des bibliothèques JSON.
la source
Cinchoo ETL - une bibliothèque open source disponible pour effectuer la conversion de Xml en JSON facilement avec quelques lignes de code
Xml -> JSON:
JSON -> Xml:
Consultez l'article CodeProject pour obtenir de l'aide supplémentaire.
Avertissement: je suis l'auteur de cette bibliothèque.
la source
J'ai fait comme David Brown l'a dit mais j'ai eu l'exception suivante.
Une solution serait de modifier le fichier XML avec un élément racine, mais ce n'est pas toujours nécessaire et pour un flux XML, cela pourrait ne pas être possible non plus. Ma solution ci-dessous:
Exemple XML qui génère l'erreur:
la source
J'ai utilisé les méthodes ci-dessous pour convertir le JSON en XML
Et
J'ai utilisé la classe nommée Item pour représenter les éléments
Ça marche....
la source
Pour convertir une
JSON
chaîne,XML
essayez ceci:Pour convertir
XML
àJSON
essayer ceci:la source
utiliser une bibliothèque tierce, au lieu d'écrire son propre code pour analyser JSON ou une chaîne XML. Si vous l'utilisez une seule fois, essayez de le convertir en ligne. Json à Xml https://www.easycodeforall.com/Json2Xml.jsp Xml à Json https://www.easycodeforall.com/Xml2Json.jsp
la source