Java – Джексон – Как десериализовать случайный XML как строковое значение Map<String,String>, а затем сериализовать его JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java – Джексон – Как десериализовать случайный XML как строковое значение Map<String,String>, а затем сериализовать его

Сообщение Anonymous »

Старое описание было не тем, что я хотел, вот обновленная версия того, что я хотел.

Код: Выделить всё

package jackson.serialzation;

import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;

import java.util.HashMap;
import java.util.Map;

public class Main {
public static void main(String[] args) throws Exception {
XmlMapper xmlMapper = new XmlMapper();
System.out.println("Test 1");
String test1 = "3 & 7 - 8 < 9 [/b]";[b]
Wrapper wrapper = xmlMapper.readValue(test1, Wrapper.class);
System.out.println(wrapper.getMyMap().get("a"));
String outputXML = xmlMapper.writeValueAsString(wrapper);
System.out.println(outputXML);

System.out.println("-----------------");

System.out.println("Test 2");
String test2 ="3 & 7 - 8 < 9 [/b]]]>";[b]
wrapper = xmlMapper.readValue(test2, Wrapper.class);
System.out.println(wrapper.getMyMap().get("a"));
outputXML = xmlMapper.writeValueAsString(wrapper);
System.out.println(outputXML);
}
}

class Wrapper {
private Map myMap = new HashMap();

@JsonAnyGetter
public Map getMyMap() {
return myMap;
}

@JsonAnySetter
@JacksonXmlProperty(localName = "myMap")
@JacksonXmlElementWrapper(useWrapping = false)
public void addToMap(String key, String value) {
this.myMap.put(key, value);
}
}
Я хотел прочитать любой дочерний элемент элемента как строковое значение ключа a myMap в Wrapper class.
Вывод приведенного выше кода:

Код: Выделить всё

Test 1

Test 1


-----------------
Test 2
3 & 7 - 8 < 9 [/b][b]<b><c>3 &amp; 7 - 8 &lt; 9</c> </b>
В идеале я надеялся, что у Джексона есть какая-то аннотация, которая позволяет такое поведение в тесте 1 (однако оно просто печатает пустое значение ключа a, что не является то, что я хотел).
Затем я попробовал с помощью теста 2 обернуть CDATA вокруг ...[/b], так что Джексон может десериализовать ... так же, как и строковое значение. Но при сериализации объекта-обертки в String он возвращает мне нежелательный вывод.Это должно быть:

Код: Выделить всё

3 & 7 - 8 < 9 [/b]
НЕ 3 & 7 - 8 < 9
Итак, если Джексон сможет десериализовать строку в тесте 1, то она мог бы сериализоваться в строку точно так же, как String test1, это то, что я хотел.

Подробнее здесь: https://stackoverflow.com/questions/791 ... of-mapstri
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Назначьте ввод Map> выходу Map>
    Anonymous » » в форуме JAVA
    0 Ответы
    124 Просмотры
    Последнее сообщение Anonymous
  • Джексон анализирует json на Map с вложенными полями. Правильный анализ вложенного поля на Map
    Anonymous » » в форуме JAVA
    0 Ответы
    86 Просмотры
    Последнее сообщение Anonymous
  • Джексон: сериализовать / десериализовать объект с одним полем для массива
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Java Convert Map> в Map> [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Как сопоставить Map> из application.yml в micronaut
    Anonymous » » в форуме JAVA
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»