Подтвердить что ты не робот

Преобразование 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", а также написать мои собственные вспомогательные элементы.

4b9b3361

Ответ 1

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

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

toString может принимать второй аргумент, чтобы указать имя корня XML node.

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

Проверьте Javadoc

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

П

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

оригинальное сообщение обновлено новыми ссылками

Ответ 2

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

Обратите внимание: http://www.cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html

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

Ответ 3

Если вы хотите заменить любое значение node, вы можете сделать это следующим образом:

JSONObject json = new JSONObject(str);
String xml = XML.toString(json);
xml.replace("old value", "new value");

Ответ 4

Трансформация с помощью XSLT 3.0 - это единственный правильный способ сделать это, насколько я могу судить. Гарантируется создание корректного XML и хорошая структура. https://www.w3.org/TR/xslt/#json

Ответ 5

Библиотека Underscore-java имеет статический метод U.jsonToXml(jsonstring). Я поддерживаю проект. Живой пример

import com.github.underscore.lodash.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]}";  
        System.out.println(json); 
        String xml = U.jsonToXml(json);  
        System.out.println(xml); 
    }
}

Выход:

{"name":"JSON","integer":1,"double":2.0,"boolean":true,"nested":{"id":42},"array":[1,2,3]}
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>JSON</name>
  <integer number="true">1</integer>
  <double number="true">2.0</double>
  <boolean boolean="true">true</boolean>
  <nested>
    <id number="true">42</id>
  </nested>
  <array number="true">1</array>
  <array number="true">2</array>
  <array number="true">3</array>
</root>