online - Java-Implementierung von JSON in XML-Konvertierung




xml to xsd (6)

Gibt es vorhandene JARs, die von JSON in XML konvertiert werden können?


Eine weitere Möglichkeit: Jettison, http://jettison.codehaus.org kann Json über eine XML-Parsing-Schnittstelle (stax XMLStreamReader) verfügbar machen, die die Integration in Systeme ermöglicht, die nur XML verstehen. Es erfordert die Verwendung einer Konvention (Dachsfisch, oder was auch immer der andere genannt wurde).

XStream beispielsweise verwendet Jettison (oder zumindest die Badgerfish-Konvention), um die Verwendung von JSON zu ermöglichen.

Aber die Frage selbst ist etwas vage: Während Sie immer von einem zum anderen konvertieren können (es ist eine sehr triviale Sache, um wirklich zu tun), sind XML und JSON nicht gleichwertig: es gibt kein eins-zu-eins verlustfreies generisches Mapping. Daher lautet die Frage: Was planen Sie mit den Ergebnissen, wie wird die resultierende XML verwendet?


Kein Java, sondern eine reine XSLT 2.0-Implementierung :

Sehen Sie sich das f:json-document() aus der FXSL 2.x Bibliothek an .

Mit dieser Funktion ist es sehr einfach, JSon zu integrieren und es einfach als ... XML zu verwenden.

Zum Beispiel kann man einfach den folgenden XPath-Ausdruck schreiben:

f:json-document($vstrParam)/Students/*[sex = 'Female']

und alle Kinder von Students mit sex = 'Female'

Hier ist das vollständige Beispiel:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:f="http://fxsl.sf.net/"
 exclude-result-prefixes="f xs"
 >
 <xsl:import href="../f/func-json-document.xsl"/>

 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vstrParam" as="xs:string">
{

  "teacher":{
    "name":
      "Mr Borat",
    "age":
      "35",
    "Nationality":
      "Kazakhstan"
             },


  "Class":{
    "Semester":
      "Summer",
    "Room":
      null,
    "Subject":
      "Politics",
    "Notes":
      "We're happy, you happy?"
           },

  "Students":
    {
      "Smith":
        {"First Name":"Mary","sex":"Female"},
      "Brown":
        {"First Name":"John","sex":"Male"},
      "Jackson":
        {"First Name":"Jackie","sex":"Female"}
    }
    ,


  "Grades":

    {
      "Test":
      [
        {"grade":"A","points":68,"grade":"B","points":25,"grade":"C","points":15},

        {"grade":"C","points":2, "grade":"B","points":29, "grade":"A","points":55},

        {"grade":"C","points":2, "grade":"A","points":72, "grade":"A","points":65}
       ]
    }


}
 </xsl:variable>

 <xsl:template match="/">
    <xsl:sequence select=
     "f:json-document($vstrParam)/Students/*[sex = 'Female']"/>

 </xsl:template>
</xsl:stylesheet>

Wenn die obige Transformation auf ein beliebiges XML-Dokument angewandt wird (ignoriert), wird das korrekte Ergebnis erzeugt :

<Smith>
   <First_Name>Mary</First_Name>
   <sex>Female</sex>
</Smith>
<Jackson>
   <First_Name>Jackie</First_Name>
   <sex>Female</sex>
</Jackson>

Sie können ein JSONObject erstellen und dann mithilfe der XML-Klasse im Namespace org.json in XML konvertieren

Die json-Zeichenfolge in das Objekt einzufügen ist so einfach wie das Übergeben in seinem Konstruktor

JSONObject o = new JSONObject(jsonString);

Dann können Sie es im XML-Format mit der XML-Klasse erhalten:

String xml = org.json.XML.toString(o);



Umwandlungsbox !!!

Ich benutze den JSON, den Dimitre in seine Antwort eingefügt und in ein XML umgewandelt hat. Mal sehen, ob es für dich funktioniert .....

import org.json.me.JSONObject;

import cjm.component.cb.xml.ToXML;

public class Test
{
public static void main(String[] args)
{
    try
    {
        JSONObject objectJSON = new JSONObject();

        objectJSON.put("ROOT", (new JSONObject("{\"teacher\":{\"name\":\"Mr Borat\",\"age\":\"35\",\"Nationality\":\"Kazakhstan\"},\"Class\":{\"Semester\":\"Summer\",\"Room\":null,\"Subject\":\"Politics\",\"Notes\":\"We're happy, you happy?\"},\"Students\":{\"Smith\":{\"FirstName\":\"Mary\",\"sex\":\"Female\"},\"Brown\":{\"FirstName\":\"John\",\"sex\":\"Male\"},\"Jackson\":{\"FirstName\":\"Jackie\",\"sex\":\"Female\"}},\"Grades\":{\"Test\":[{\"grade\":\"A\",\"points\":68,\"grade\":\"B\",\"points\":25,\"grade\":\"C\",\"points\":15},{\"grade\":\"C\",\"points\":2,\"grade\":\"B\",\"points\":29,\"grade\":\"A\",\"points\":55},{\"grade\":\"C\",\"points\":2,\"grade\":\"A\",\"points\":72,\"grade\":\"A\",\"points\":65}]}}")));

        System.out.println("JSON: " + objectJSON);

        StringBuilder xml = new ToXML().convertToXML(objectJSON, true); // Conversion Box!!!!

        System.out.println("XML: " + xml);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
}

Ausgabe:

JSON: {"ROOT":{"Students":{"Brown":{"FirstName":"John","sex":"Male"},"Jackson":{"FirstName":"Jackie","sex":"Female"},"Smith":{"FirstName":"Mary","sex":"Female"}},"Class":{"Subject":"Politics","Room":null,"Semester":"Summer","Notes":"We're happy, you happy?"},"Grades":{"Test":[{"points":15,"grade":"C"},{"points":55,"grade":"A"},{"points":65,"grade":"A"}]},"teacher":{"age":"35","name":"Mr Borat","Nationality":"Kazakhstan"}}}
 -------- JSON Detected -------- 
 -------- XML created Successfully -------- 
XML: <ROOT><Students><Brown><FirstName>John</FirstName><sex>Male</sex></Brown><Jackson><FirstName>Jackie</FirstName><sex>Female</sex></Jackson><Smith><FirstName>Mary</FirstName><sex>Female</sex></Smith></Students><Class><Subject>Politics</Subject><Room>null</Room><Semester>Summer</Semester><Notes>We're happy, you happy?</Notes></Class><Grades><Test><LIST_ELEMENT_Test><points>15</points><grade>C</grade></LIST_ELEMENT_Test><LIST_ELEMENT_Test><points>55</points><grade>A</grade></LIST_ELEMENT_Test><LIST_ELEMENT_Test><points>65</points><grade>A</grade></LIST_ELEMENT_Test></Test></Grades><teacher><age>35</age><name>Mr Borat</name><Nationality>Kazakhstan</Nationality></teacher></ROOT>




translation