Czy istnieją już pliki JAR do konwersji z JSON na XML?Implementacja Java konwersji JSON na XML
Odpowiedz
Nie Java, ale czystym XSLT 2.0 realizacja:
Wystarczy popatrzeć na f:json-document()
z FXSL 2.x library.
Za pomocą tej funkcji niezwykle łatwo jest włączyć JSon i używać go tak samo jak ... XML.
Na przykład, można po prostu napisać następujące wyrażenie XPath:
f:json-document($vstrParam)/Students/*[sex = 'Female']
i uzyskać wszystkie dzieci Students
z sex = 'Female'
Oto pełna przykład:
<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>
Gdy powyższe transformacji jest stosowane na dowolnym dokumencie XML (ignorowane), poprawnym wynikiem jest produkowany:
<Smith>
<First_Name>Mary</First_Name>
<sex>Female</sex>
</Smith>
<Jackson>
<First_Name>Jackie</First_Name>
<sex>Female</sex>
</Jackson>
Możesz spróbować XStream. Spójrz na http://x-stream.github.io/faq.html#JSON.
Można użyć json-lib, zapewnia konwersję dwukierunkową.
Jeszcze jedna możliwość: Jettison, http://jettison.codehaus.org może narazić JSON za pośrednictwem interfejsu XML dekodowaniu (Stax XMLStreamReader), która umożliwia integracja z systemami, które rozumieją tylko XML. Wymaga to użycia konwencji (borsuka lub cokolwiek innego, jak się nazywał).
XStream, na przykład, wykorzystuje konwencję Jettison (lub przynajmniej Badgerfish), aby umożliwić użycie JSON.
Ale samo pytanie jest trochę niejasne: podczas gdy zawsze można przejść z jednego na drugie (naprawdę jest to bardzo banalne), XML i JSON nie są równoważne: nie ma jednego do jednego bezstratnego generyczne mapowanie. W związku z tym pytanie brzmi: co zamierzasz zrobić z wynikami, w jaki sposób należy użyć xml?
http://json-lib.sourceforge.net/
- powyższych punktów o nie całkowicie niezawodny jeden-jeden mapowania są ważne, ale miałem dobre doświadczenia z konwersji XML do JSON przy użyciu powyższej biblioteki.
Można utworzyć JSONObject, a następnie przekonwertować go do formatu XML za pomocą XML class w org.json nazw
Owijanie ciąg json w obiekcie jest tak proste jak przepuszczenie go w jego konstruktora
JSONObject o = new JSONObject(jsonString);
Wtedy można go pobrać w formacie XML za pomocą klasy XML, tak jak poniżej:
String xml = org.json.XML.toString(o);
To jest niezwykle proste, dziękuję! – Jon
Czy możesz rozwinąć? To znaczy czy muszę używać zewnętrznych słoików? Eclipse nie rozpozna tych poleceń –
Możesz spróbować tego: http://mvnrepository.com/artifact/org.codeartisans/org.json/20130603 –
Możesz wypróbować https://github.com/lukas-krecan/json2xml, która zapewnia prostą konwersję JSON do XML. Pobiera parser Jackson JSON i używa go do emitowania zdarzeń SAX.
StAXON może konwertować JSON do XML przy użyciu XSLT z domyślnych szablonów lub Stax zdarzeń API https://github.com/beckchr/staxon/wiki/Converting-JSON-to-XML
Oto prosty przykład:
plik wejściowy:
{
"container":[
{
"someString":"xxxxx",
"someInteger":123,
"someArrayElem":[
{
"key":1111,
"value":"One"
},
{
"key":2222,
"value":"Two"
}
]
}
]
}
Import kod +:
import de.odysseus.staxon.json.JsonXMLConfig;
import de.odysseus.staxon.json.JsonXMLConfigBuilder;
import de.odysseus.staxon.json.JsonXMLInputFactory;
import de.odysseus.staxon.xml.util.PrettyXMLEventWriter;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import java.io.StringWriter;
StringWriter stringWriter = new StringWriter();
JsonXMLConfig config = new JsonXMLConfigBuilder().multiplePI(false).prettyPrint(false).build();
XMLEventReader reader = new JsonXMLInputFactory(config).createXMLEventReader(getClass().getClassLoader().getResourceAsStream("input.json"));
XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(stringWriter);
writer = new PrettyXMLEventWriter(writer);
writer.add(reader);
String xml = stringWriter.getBuffer().toString();
WYJŚCIE :
<?xml version="1.0" encoding="UTF-8"?>
<container>
<someString>xxxxx</someString>
<someInteger>123</someInteger>
<someArrayElem>
<key>1111</key>
<value>One</value>
</someArrayElem>
<someArrayElem>
<key>2222</key>
<value>Two</value>
</someArrayElem>
</container>
Używam JSON że Dimitre został wklejony w swojej odpowiedzi i zostały przekształcone XML. Pozwala sprawdzić, czy to działa dla Ciebie .....
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();
}
}
}
wyjściowa:
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>
- 1. XML do konwersji JSON w iOS
- 2. Czy istnieją ścisłe reguły konwersji JSON na XML iz powrotem?
- 3. Implementacja operatora konwersji dla wskaźnika
- 4. Najlepsza architektura do konwersji JSON na SQL?
- 5. JSON na klasę Java
- 6. Implementacja Java REST: Jersey kontra CXF
- 7. Dwukierunkowe JSON-RPC przez gniazdo TCP Implementacja Java
- 8. HTML5 localStorage (XML/dane JSON)
- 9. Odwzorowywanie obiektów XML na obiekty Java
- 10. Przechowywanie xml wewnątrz obiektu json
- 11. Jak przekonwertować Xml na Json i odwrotnie w C#
- 12. Implementacja Java OCR
- 13. Implementacja niestandardowej bariery Java
- 14. Implementacja java drzewa segmentowego
- 15. Implementacja RNTN w java
- 16. Implementacja REST RQL Java
- 17. Konwersja XML na JSON przy użyciu R
- 18. JSON.Net serializuje XML na wielbłądzie JSON
- 19. tłumaczyć xml na json w node.js
- 20. Czy istnieje konwerter JSON na XML?
- 21. Czy istnieje bardziej elegancki sposób konwersji dokumentu XML na ciąg w języku Java niż ten kod?
- 22. Przetwarzanie XML do JSON
- 23. Konwersja JSON do XML
- 24. Java: inetaddress do konwersji ciągów
- 25. Biblioteka konwersji jednostek metrycznych Java?
- 26. Java ogg do konwersji wav
- 27. Narzędzie online do konwersji formatu JSON na obiekt C#
- 28. Konwersja emoji Java na xml: jakie biblioteki istnieją?
- 29. Gson do konwersji json z dwoma DateFormat
- 30. Jackson JSON + Java Generics
wygląda świetnie. Ale próbowałem i f: json-document() zawsze zwraca pusty dokument. Opublikowalem o tym na forum SF.net: https://sourceforge.net/forum/message.php?msg_id=7385342 – avernet
Istnieje przykład jak korzystać z tej funkcji. Jest to plik testFunc-json-document.xsl w folderze Tests: http://fxsl.cvs.sourceforge.net/viewvc/fxsl/fxsl-xslt2/Tests/testFunc-json-document.xsl?revision= 1.1 i widok = znaczniki Po zastosowaniu na dowolnym pliku XML (nieużywany) ta transformacja daje prawidłowy wynik. Jednym z potencjalnych czynników, który może spowodować twój problem, jest użycie stosunkowo starej wersji Saxona - skorzystaj z wersji Saxona 9.x. Również link w wiadomości jest nieosiągalny. –