java - 获取XML数据后,如何解析它并转换为JSON?

标签 java xml json jakarta-ee jersey

在 Jersey RESTful 框架中,我知道我可以在客户端中获取 xml 数据,如下所示:

private static final String BaseURI = "http://DOMAN.com";

ClientConfig config = new DefaultClientConfig();

Client client = Client.create(config);

WebResource service = client.resource(BaseURI);

String xmlData = service.path("rest").path("todos").accept(
                MediaType.APPLICATION_XML).get(String.class)

我的问题是如何解析 xmlData ?我想从 xmlData 获取所需的数据,并将所需的数据传输到 JSON,实现此目的的最佳方法是什么?

最佳答案

作为一般规则,如果没有必要,切勿直接从 XML 转换为 JSON(反之亦然)。 相反,将 XML 或 JSON 中的数据绑定(bind)到 POJO,然后进行其他转换。虽然看起来不直观,但这会带来更清晰的结果和更少的问题,因为 POJO 和数据格式之间的转换有更多的选项、成熟的、设计良好的库; POJO 更容易配置(使用注释),并且有更多元数据来指导转换过程。 直接转换库(如 Jettison,见下文)受到各种问题的困扰;通常会生成“franken-JSON”,这种 JSON 在技术上是正确的,但由于转换所需的添加结构而看起来很陌生。

如果是 Jersey,则使用 JAXB 来处理与 POJO 之间的 XML,并且 Jackson对 JSON 执行同样的操作。无论如何,这些都是 Jersey 使用的库;并且直接使用非常简单。

如果你绝对坚持直接转换,你可以尝试Jettison ,但是如果您需要的话,请准备好遇到列表、数组和映射的问题(尤其是单元素数组——数组在 XML 中存在问题,并且自动转换经常出错)。

关于java - 获取XML数据后,如何解析它并转换为JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650681/

相关文章:

java - 如何在 lambda 函数中传递多个 get 参数?

java - 无需 DB 即可启动 Java/Play2.5 REST API

java - 我想自动处理无效和有效的凭据

java - 以编程方式设置测试模式时出现真正的 Admob 广告

c# - Json 无法解析 ajax post 请求

javascript - 如何处理动态脚本中定义的多个请求

java - Solr 导入命令不起作用

python - 尝试将 Django 模型转换为 XML 时出现 UnicodeEncodeError

java - 如何在 Android 中使用 XPath 编辑属性

JsonMappingException : Can not instantiate value of type [simple type, a.b.c.Company] 来自 JSON 字符串;没有单字符串构造函数/工厂方法