#java #jackson
Вопрос:
У меня возникла проблема при попытке сериализовать объект Java в XML с помощью jackson XmlMapper.
Одно из полей содержит строку с экранированными двойными кавычками, например:
String example = "This is a string with "escaped double quotes"";
Когда я передаю объект в XMLmapper (переменные-это объект, содержащий строку примера):
XmlMapper xmlMapper = new XmlMapper(); String xml = xmlMapper.writeValueAsString(variables);
это результат, который я получаю:
some other tags lt;examplegt;This is a string with "escaped double quotes""This is a string with "escaped double quotes""This is a string with "escaped double quotes"lt;/examplegt; some other tags
Как я могу сериализовать строку с экранированными двойными кавычками в XML для достижения надлежащего результата, т. Е.
lt;examplegt;This is a string with "escaped double quotes"lt;/examplegt;
Комментарии:
1. привет и добро пожаловать! 😉 Где вы «получаете результат»? (Извините, не могу воспроизвести: я получаю вывод (от
System.out.println(xml);
):lt;SimpleBeangt;lt;examplegt;This is a string with "escaped double quotes"lt;/examplegt;lt;/SimpleBeangt;
)2. @xerx593 я распечатал его в консоли, так же, как и вы.
3. Вы уверены, что сами как-нибудь не пытались сбежать от веревки? (В этом нет необходимости.)
4. @VGR Нет, строка анализируется из полученного JSON, и перед вызовом xmlMapper она выглядит точно так же, как в переменной «пример» в моем вопросе.
Ответ №1:
Затем: «Извините, не могу воспроизвести»!
pom.xml:
lt;?xml version="1.0" encoding="UTF-8"?gt; lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"gt; lt;modelVersiongt;4.0.0lt;/modelVersiongt; lt;groupIdgt;com.examplelt;/groupIdgt; lt;artifactIdgt;xml-mapperlt;/artifactIdgt; lt;versiongt;1.0-SNAPSHOTlt;/versiongt; lt;packaginggt;jarlt;/packaginggt; lt;dependenciesgt; lt;dependencygt; lt;groupIdgt;com.fasterxml.jackson.dataformatlt;/groupIdgt; lt;artifactIdgt;jackson-dataformat-xmllt;/artifactIdgt; lt;versiongt;2.13.0lt;/versiongt; lt;!-- tried [2.11.0 - 2.13.0], same result --gt; lt;/dependencygt; lt;dependencygt; lt;groupIdgt;org.projectlomboklt;/groupIdgt; lt;artifactIdgt;lomboklt;/artifactIdgt; lt;versiongt;1.18.22lt;/versiongt; lt;/dependencygt; lt;/dependenciesgt; lt;/projectgt;
src/main/java/com/example/xml/mapper/SimpleBean.java:
package com.example.xml.mapper; import lombok.Data; @Data public class SimpleBean { final String example = "This is a string with "escaped double quotes""; }
src/main/java/com/example/xml/mapper/Main.java:
package com.example.xml.mapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.dataformat.xml.XmlMapper; public class Main { public static void main(String[] args) throws JsonProcessingException { XmlMapper xmlMapper = new XmlMapper(); String xml = xmlMapper.writeValueAsString(new SimpleBean()); System.out.println(xml); } }
… gt;mvn clean package exec:java -Dexec.mainClass=com.example.xml.mapper.Main
(jdk8), печатает:
... --- exec-maven-plugin:3.0.0:exec (default-cli) @ xml-mapper --- lt;SimpleBeangt;lt;examplegt;This is a string with "escaped double quotes"lt;/examplegt;lt;/SimpleBeangt; ------------------------------------------------------------------------ BUILD SUCCESS ------------------------------------------------------------------------ Total time: 1.570 s Finished at: 2021-11-16T13:02:33 01:00 ------------------------------------------------------------------------
Комментарии:
1. ..также никаких изменений (работает как шарм ;-( ), на «изменяемом» компоненте…