Java 在JEE Restfull webservice和Android之间使用相同的API解析数据的最佳方式是什么?
我们有一个由JEE模块、JAVA客户端应用程序、Android应用程序和其他自制JAVA项目组成的大型项目 由于项目的多样性,为了限制项目之间的代码冗余,我们决定制作JEE、java客户端应用程序和Android应用程序所共有的java libs项目和java实体项目 起初,我们在JEE服务器端只有Java客户端和Restfull web服务,它们使用JAXBXML绑定API交换数据。因此,在实体项目(设置为依赖于Java客户机项目和JEE项目)中的类上使用JAXB注释很容易。双方都可以使用相同的注释轻松地编码和解码XML数据 现在我们有了Android应用程序,我想用同样的方式交换数据。问题是JAXB在Android上被“贬低”。所以我在Jackson库中发现有一个Java 在JEE Restfull webservice和Android之间使用相同的API解析数据的最佳方式是什么?,java,android,jakarta-ee,jackson,jaxb,Java,Android,Jakarta Ee,Jackson,Jaxb,我们有一个由JEE模块、JAVA客户端应用程序、Android应用程序和其他自制JAVA项目组成的大型项目 由于项目的多样性,为了限制项目之间的代码冗余,我们决定制作JEE、java客户端应用程序和Android应用程序所共有的java libs项目和java实体项目 起初,我们在JEE服务器端只有Java客户端和Restfull web服务,它们使用JAXBXML绑定API交换数据。因此,在实体项目(设置为依赖于Java客户机项目和JEE项目)中的类上使用JAXB注释很容易。双方都可以使用相同
JaxbAnnotation
参数用于获取与JAXB绑定的数据,但我不相信该解决方案的完全兼容性
我还尝试使用JSON绑定,因为我看到JSON-B将是JavaEE8中的标准,但它似乎需要JavaEEAPI类,我认为将其添加到Android项目中并不好
所以我的问题是:使用相同的实体依赖关系(和相同的解析API)并限制实体对象上的XML或JSON绑定注释,在JEE Restfull web服务和Android应用程序之间交换数据的最佳实践是什么
我希望你能很好地理解这个问题
谢谢。让我们为您的实体项目命名
实体模块
。该项目包含用JAXB
注释注释的POJO
类,例如:@xmlement
,@XmlType
,等等。正如您所写,“JAXB在Android上“贬值”了”,您需要在以下两者之间进行选择:使用其他工具读取JAXB
注释或创建新的定制POJO
结构
通过其他工具阅读JAXB
注释
Jackson
库对JAXB
注释有很好的支持。您所需要做的就是使用这个模块。注册很容易,如果您已经使用Jackson
对JSON
进行序列化/反序列化,这是一个明显的选择。如何做到这一点,您可以在SO上找到此问题的阅读答案:。优点:
- 您不需要创建新的
s架构POJO
- 如果
发生更改,您将使用下一版本的restfulapi
项目实体模块
- 在
上启用Android
时出现问题JAXB
- 与使用重型
和JAXB
模块层相关的性能问题Jackson
POJO
s创建新模块,并使用更快、更小的库,如。优点:
- 更好的性能
- 使用折旧的
类构建应用程序没有问题JAXB
- 您可以优化结构:忽略未使用的字段,选择更好的类型,等等
- 您需要创建具有新类结构的新模块
- 学习和维护新图书馆
- 如果
发生更改,则需要在几个模块中复制更改API
JAXB
注释替换为Jackson
注释Jackson
除了对JSON
的支持之外,还提供了非常好的XML
支持。它将使您能够轻松支持API
中的JSON
和XML
格式。此外,您还可以在Android
上使用Jackson
库UI
在Android
app上流动与Web app
上流动是不同的,你可能最终会有这样的想法让我们命名您的实体项目
实体模块
。该项目包含用JAXB
注释注释的POJO
类,例如:@xmlement
,@XmlType
,等等。正如您所写,“JAXB在Android上“贬值”了”,您需要在以下两者之间进行选择:使用其他工具读取JAXB
注释或创建新的定制POJO
结构
通过其他工具阅读JAXB
注释
Jackson
库对JAXB
注释有很好的支持。您所需要做的就是使用这个模块。注册很容易,如果您已经使用Jackson
对JSON
进行序列化/反序列化,这是一个明显的选择。如何做到这一点,您可以在SO上找到此问题的阅读答案:。优点:
- 您不需要创建新的
s架构POJO
- 如果
发生更改,您将使用下一版本的restfulapi
项目实体模块
- 在
上启用Android
时出现问题JAXB
- 与使用重型
和JAXB
模块层相关的性能问题Jackson
POJO
s创建新模块,并使用更快、更小的库,如。优点:
- 更好的性能
- 使用折旧的
类构建应用程序没有问题JAXB
- 您可以优化结构:忽略未使用的字段,选择更好的类型,等等
- 您需要创建具有新类结构的新模块
- 学习和维护新图书馆
- 如果
发生更改,您需要在几个模块中复制更改API