#java #json #jackson #modelmapper
#java #json #джексон #modelmapper
Вопрос:
Я пытаюсь преобразовать XML-строку в JSON с помощью Jackson.
На данный момент я использую эту строку:
String xml = "<?xml version="1.0" encoding="UTF-8"?>n"
" <rootNode>n"
" <data>n"
" <cityCode>R8</cityCode>n"
" <place>n"
" <code>01</code>n"
" </place>n"
" </data>n"
" <data>n"
" <cityCode>R9</cityCode>n"
" <place>n"
" <code>02</code>n"
" </place>n"
" </data>n"
"</rootNode>";
Вот код, который я использую:
XmlMapper xmlMapper = new XmlMapper();
JsonNode node = xmlMapper.readTree(xml);
ObjectMapper jsonMapper = new ObjectMapper();
String json = jsonMapper.writeValueAsString(node)
Но анализатор, похоже, получает только один узел:
{"data":{"cityCode":"R9","place":{"code":"02"}}}
Как я могу преобразовать все узлы в JSON?
Спасибо
Комментарии:
1. Два XML-элемента data преобразуются в json-элементы с именем «data». Кажется, у вас не может быть двух json-элементов с одинаковым именем в одном json-объекте. Второй элемент данных для этого перезаписывает первый.
2.Читать github.com/FasterXML/jackson-dataformat-xml#known-limitations.
Ответ №1:
Я заставляю его работать, используя readValue
в List
XmlMapper xmlMapper = new XmlMapper();
List list = xmlMapper.readValue(xml, List.class);
ObjectMapper jsonMapper = new ObjectMapper();
String json = jsonMapper.writeValueAsString(list);
Не уверен, почему ваша версия не работает, похоже, есть проблемы с readTree
и повторяющимися атрибутами. Смотрите Эту статью, Укажите 5.1. Limitations