2014-12-01 5 views
0

У меня есть строка в формате xml и ее необходимо преобразовать в формат JSON. Я прочитал Quickest way to convert XML to JSON in Java, но мы не можем использовать внешние библиотеки, кроме стандартной Java.Преобразование строки xml в строку JSON без использования сторонних библиотек

Есть ли простой или хороший способ достичь этого без каких-либо сторонних библиотек?

Вот строка XML выглядит следующим образом:

<container> 
    <someString>xxx</someString>  
    <someInteger>123</someInteger>  
    <someArrayElem>   
     <key>1111</key>   
     <value>One</value>  
    </someArrayElem>  

    <someArrayElem>   
    <key>2222</key>   
    <value>Two</value>  
    </someArrayElem> 
</container> 

нужны изменить его на:

{ 

    "someString": "xxx", 
    "someInteger": "123", 
    "someArrayElem": [ 
     { 
     "key": "1111", 
     "value": "One" 
     }, 

     { 
     "key": "2222", 
     "value": "Two" 
     } 
    ] 

} 
+3

_Is есть простой или хороший способ сделать это? _ Использование сторонних библиотек, да. Все другие способы - это плохо, а не просто. –

+0

@SotiriosDelimanolis, ну, мы просто не можем использовать какие-либо библиотеки. мой формат простой xml без атрибута или что-то фантазии, Есть ли какой-либо apis, использующий стандартный java для преобразования? – Jaskey

+0

Нет. Также обратите внимание, что между XML-элементами и членами JSON нет стандартного сопоставления 1-к-1. Вы должны определить преобразование. –

ответ

1

Вы можете посмотреть на эту проблему с точки зрения XSL преобразований. Итак, вы можете использовать JAXP, который включен в Java SE SDK (без дополнительных зависимостей).

// raw xml 
    String rawXml= ... ; 

    // raw Xsl 
    String rawXslt= ... ; 

    // create a transformer 
    Transformer xmlTransformer = TransformerFactory.newInstance().newTransformer(
    new StreamSource(new StringReader(rawXslt)) 
); 

    // perform transformation 
    StringWriter result = new StringWriter(); 
    xmlTransformer.transform(
    new StreamSource(new StringReader(rawXml)), new StreamResult(result) 
); 

    // print output 
    System.out.println(result.getBuffer().toString()); 

У вас уже есть свой XML, все, что вам нужно сейчас, это ваш XSL-код. Я собирался написать вам один с нуля, когда узнал, что this website уже сделал это для меня/вас. Here - это прямая ссылка на файл XSL, который они создали.

Примечание: это одностороннее преобразование. Вы не можете использовать его для преобразования JSON в XML.

Наслаждайтесь.

Смежные вопросы