Вопрос-ответ

Converting JSON to XML in Java

Преобразование JSON в XML в Java

Я новичок в json. У меня есть программа для генерации xml из объекта json.

String str = "{'name':'JSON','integer':1,'double':2.0,'boolean':true,'nested':{'id':42},'array':[1,2,3]}";  
JSON json = JSONSerializer.toJSON( str );
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setTypeHintsCompatibility( false );
String xml = xmlSerializer.write( json );
System.out.println(xml);

результат таков:

<?xml version="1.0" encoding="UTF-8"?>
<o><array json_class="array"><e json_type="number">1</e><e json_type="number">2</e><e json_type="number">3</e></array><boolean json_type="boolean">true</boolean><double json_type="number">2.0</double><integer json_type="number">1</integer><name json_type="string">JSON</name><nested json_class="object"><id json_type="number">42</id></nested></o>

моя самая большая проблема заключается в том, как написать мои собственные атрибуты вместо json_type ="number", а также написать мои собственные вложенные элементы, такие как .

Переведено автоматически
Ответ 1

Используйте (превосходную) библиотеку JSON-Java из json.org затем

JSONObject json = new JSONObject(str);
String xml = XML.toString(json);

toString может принимать второй аргумент для указания имени корневого узла XML.

Эта библиотека также может преобразовывать XML в JSON с помощью XML.toJSONObject(java.lang.String string)

Проверьте Javadoc

Ссылка на репозиторий github

POM

<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160212</version>
</dependency>

исходное сообщение обновлено новыми ссылками

Ответ 2

библиотека подчеркивания-java имеет статический метод U.jsonToXml(jsonstring). Живой пример

import com.github.underscore.U;

public class MyClass {
public static void main(String args[]) {
String json = "{\"name\":\"JSON\",\"integer\":1,\"double\":2.0,\"boolean\":true,\"nested\":{\"id\":42},\"array\":[1,2,3]}";
String xml = U.jsonToXml(json, U.JsonToXmlMode.REMOVE_ATTRIBUTES);
System.out.println(xml);
}
}

Вывод:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>JSON</name>
<integer>1</integer>
<double>2.0</double>
<boolean>true</boolean>
<nested>
<id>42</id>
</nested>
<array>1</array>
<array>2</array>
<array>3</array>
</root>
Ответ 3

Для преобразования json в xml используйте следующий пример Джексона:

final String str = "{\"name\":\"JSON\",\"integer\":1,\"double\":2.0,\"boolean\":true,\"nested\":{\"id\":42},\"array\":[1,2,3]}";
ObjectMapper jsonMapper = new ObjectMapper();
JsonNode node = jsonMapper.readValue(str, JsonNode.class);
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_1_1, true);
ObjectWriter ow = xmlMapper.writer().withRootName("root");
StringWriter w = new StringWriter();
ow.writeValue(w, node);
System.out.println(w.toString());

С принтами:

<?xml version='1.1' encoding='UTF-8'?>
<root>
<name>JSON</name>
<integer>1</integer>
<double>2.0</double>
<boolean>true</boolean>
<nested>
<id>42</id>
</nested>
<array>1</array>
<array>2</array>
<array>3</array>
</root>

Чтобы преобразовать его обратно (xml в json), взгляните на этот ответ https://javalang.ru/a/62468955/1485527 .

Ответ 4

Если у вас есть допустимый файл dtd для xml, вы можете легко преобразовать json в xml и xml в json с помощью двоичного файла jar eclipselink.

Обратитесь к этому: http://www.cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html

В статье также есть пример проекта (включая поддерживающие сторонние jars) в виде zip-файла, который можно загрузить для справочных целей.

java xml json