![]() |
1
2
解决方案2 绝对更有吸引力。但问题是,您说XML和JSON有不同的结构。如果存在结构性差异,则必须对其进行补偿。我不确定单一模式如何可能,必须以某种方式进行补偿。 因此,关键是您需要某种灵活的方法来映射不同的结构。XSLT是一种很好的工具。所以我建议一个不同的解决方案。 只创建一个与JSON匹配的模型,用Jackson注释(或任何JSON使用的注释)对其进行注释。还可以使用JAXB注释对其进行注释。到目前为止,它就像解决方案2。然而,问题是,本例中的XML结构基于JSON结构,与传入的XML结构不直接兼容。要解决这个问题,请编写一个XSLT转换,将传入的XML转换为基于JSON的XML结构。基本上:
XSLT是非常强大和灵活的XML转换工具。一个重要的反面是,您可能需要两个XSLT:正向和反向。否则,测试将相当困难。 我见过几次的另一种选择是,实际上有两个模型,并使用类似于推土机的东西在它们之间进行转换:
这也可能有效。您应该为传入的XML创建一个XML模式,这样就可以为传入的XML模型生成Java类,这样您就不会有太多的维护开销。问题是(至少在我看来)Dozer和诸如此类的工具没有XSLT灵活和强大。我认为编写XSLT在XML结构之间转换要比使用Dozer在Java结构之间转换容易得多。 |
![]() |
2
1
XSLT为这种需求提供了一个优雅的解决方案。作为一个示例,下面是一个示例转换,它适用于上提供的XML this page 并将其转换为同一页面上给定的json。
此示例转换为XSLT 1.0。您可以通过在XML文件中添加对它的引用,并在web浏览器中加载XML文件来测试它。 例如,如果上述变换存储在测试中。xsl,将XML置于测试中。xml,其转换引用如下:
|
![]() |
3
-1
我的建议是,您可以为xml结构创建模型,并将模型转换为json。有第三方JAR将模型转换为json,反之亦然。 |
![]() |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
![]() |
Henry · 使用Python将json重新格式化为键值对 2 年前 |
![]() |
eymentakak · json字典类型错误:字符串索引必须是整数 2 年前 |
![]() |
Vodka · 如何将单个json对象转换为json数组? 2 年前 |
![]() |
Alper · 从json转换为数据帧? 2 年前 |