Problem: JSON->XML Konverter – Information über Array geht verloren

  • Beitrag
    JulianStr
    Teilnehmer
    Hallo!

    Wir haben aktuell das folgende Problem, welches nur auftritt, wenn ein JSON-Array nur ein Element enthält:
    Es wird ein JSON-Objekt geschickt, welches einen Attribut enthält, welches ein Array ist. (siehe Beispiel)

    {
    
      "ID": 091234567890,
      "Artikel_Nr": "9999",
      "Auspraegung": [{
        "ID": 99887766,
        "Bezeichnung": "SomeText",
        "Status": "aktiv"
    }]
    }

    Der Konverter JSON->XML generiert daraus erfolgreich, wie erwartet einen XML-Konten. Beim Konvertieren von XML->JSON wird es aber nicht mehr zu einem JSON-Array generiert, sondern als einzelnes Objekt.

    {
    
      "ID": 091234567890,
      "Artikel_Nr": "9999",
      "Auspraegung": {
        "ID": 99887766,
        "Bezeichnung": "SomeText",
        "Status": "aktiv"
    }
    }

    Wird dieses nun an den Endpunkt geschickt, erhalten wir einen Fehler über einen fehlerhaften Datentyp.

    Vorschlag: Könnte man beim JSON->XML das XML-Metaflag <xsl:processing-instruction name=”xml-multiple”>Auspraegung</xsl:processing-instruction> setzen um es als Array zu markieren.

    PS: Die Beispiele sind erheblich gekürzt. Das JSON enthält bis zu 100 Attribute und es macht keinen Sinn die Struktur manuell nachzubauen.

    0
    0
Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Antworten
    Hallo,

    wenn die Konvertierung von JSON nach XML und auch wieder zurück nach JSON jeweils mit der Einstellung “Konverter=Staxon” erfolgt, taucht dann im XML die Prozess-Instruction auf:

    <JSON>
      <ID>91234567890</ID>
      <Artikel_Nr>9999</Artikel_Nr>
      <?xml-multiple Auspraegung?>
      <Auspraegung>
        <ID>99887766</ID>
        <Bezeichnung>SomeText</Bezeichnung>
        <Status>aktiv</Status>
      </Auspraegung>
    </JSON>

    und im erzeugten JSON wird es wieder zu einem Array gewandelt.

    Ihr TRANSCONNECT-Team

    0
    0
    JulianStr
    Teilnehmer
    Hallo,

    danke für die schnelle Antwort!

    Dies “Konverter=Staxon” haben wir auch ausprobiert, was aber nicht den gewünschten Effekt hatte, da das Hauptobjekt auch bereits ein Array ist. Hier macht er auch ein “<?xml-multiple ITEM?>” draus, aber nicht für dieses darunterliegendes Array.

    Generell führt der “Konverter=Staxon” aber auch nicht zum Ziel, da die Datentypen beibehalten bleiben müssen, da Staxon aus einem Feld mit leeren String “” ein null macht, was nicht gewünscht ist oder aber ein String “3” wird zu einem Integer 3.

    Viele Grüße

    0
    0
    Hallo,

    vielen Dank für das Feedback. Die JSON-Referenzimplementierung sollte Arrays auch mit einem Datentyp im XML versehen, damit es in umgekehrter Richtung wieder ein JSON-Array werden kann. Wir werden als als Ticket in unser Backlog aufnehmen.

    Aktuell wäre es evtl. eine Möglichkeit, nach der automatischen Konvertierung mittels XSLT und Search&Replace die fehlenden Array-Zeichen nachzutragen.

    Ihr TRANSCONNECT-Team

    0
    0
Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.