【问题标题】:Convert JSON string to XML string in Java在 Java 中将 JSON 字符串转换为 XML 字符串
【发布时间】:2021-09-23 08:45:10
【问题描述】:

我有下面的 Java 类,它将 JSON 文件名作为输入并将其转换为 XML 并在同一路径中创建一个新的 XML 文件。

public void convertJsonToXml(String jsonFilePath) {

    try {

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);

        Products products = objectMapper.readValue(Paths.get(jsonFilePath).toFile(), Products.class);

        XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.writeValue(new File("./metadata/FilteredPatches.xml"), products);

    }

    catch (JsonMappingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    catch (JsonProcessingException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }

    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

但是新的 XML 文件丢失了有效的 XML 格式,并在一行中打印了 XML 数据,如下所示

<Products xmlns=""><product><product><name>FileZilla 3</name><patchuid>0003931b-0000-0000-0000-000000000000</patchuid><language>0</language></product><product><name>Notepad++ 6</name><patchuid>00038b09-0000-0000-0000-000000000000</patchuid><language>0</language></product><product><name>UltraVNC 1.2.4.0 x86</name><patchuid>00035767-0000-0000-0000-000000000000</patchuid><language>0</language></product></product></Products>

关于发生了什么问题的任何线索?谢谢。

【问题讨论】:

  • Underscore-java库有一个静态方法U.jsonToXml(json)。

标签: java json xml jackson


【解决方案1】:

您需要先完成xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);,然后再致电xmlMapper.writeValue(...)。您可以删除objectMapper.enable(SerializationFeature.INDENT_OUTPUT);,因为您使用objectMapper 来读取值。

【讨论】:

  • 它起作用了,实际上 ObjectMapper 上的 enable() 函数出错了,因为我使用了不同版本的 jackson 库,在使用正确版本的库后问题解决了。感谢您的建议。
  • 我使用了以下依赖com.fasterxml.jackson.dataformatjackson-dataformat-xml
猜你喜欢
  • 2012-10-26
  • 1970-01-01
  • 2019-10-29
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多