J'ai un fichier JSON à convertir au format XML avec les champs ci-dessous. Pour "Formats" et "MediaFormats", ce sont des listes d'entiers.

    "Stars": 4.5000000000,
    "Reviews": 11,
    "Formats": [5,6],
    "MediaFormats": [1, 2] 

Mon résultat attendu est

<Price>29</Price>
<Stars>4.5</Stars>
<Reviews>11</Reviews>
<Formats>5,6</Formats>
<MediaFormats>1,2</MediaFormats>

J'ai essayé XmlDocument xmlDoc = JsonConvert.DeserializeXmlNode mais le résultat réel est

<Price>29</Price>
<Stars>4.5</Stars>
<Reviews>11</Reviews>
<Formats>5</Formats>
<Formats>6</Formats>
<MediaFormats>1</MediaFormats>
<MediaFormats>2</MediaFormats>

Une idée sur la façon de résoudre ce problème?

0
HAN CE 20 nov. 2019 à 20:00

1 réponse

Meilleure réponse

Post-traitez le résultat avec XSLT. Aucun convertisseur JSON vers XML standard (ou convertisseur XML vers JSON) ne vous donnera le résultat souhaité à chaque fois ; vous devez être prêt à le personnaliser, et XSLT est le meilleur outil pour cela.

Vous pouvez obtenir le format requis en utilisant

<xsl:for-each-group select="*" group-adjacent="node-name(.)">
  <xsl:copy>
    <xsl:value-of select="current-group()" separator=","/>
  </xsl:copy>
</xsl:for-each-group>

Bien sûr, si vous utilisez quand même XSLT, vous pouvez envisager d'utiliser les fonctions xml-to-json() et json-to-xml() de XSLT 3.0 pour que tout se fasse avec un seul outil.

0
Michael Kay 20 nov. 2019 à 23:14