【问题标题】:Sharing Model Objects from Java project with Android与 Android 共享 Java 项目中的模型对象
【发布时间】:2015-01-23 23:08:15
【问题描述】:

将常规 java 项目中的模型对象与 Android 共享的最佳方式是什么?我遇到的问题是这些域模型具有 Android 不支持的注释。例如 javax.xml.bind.annotation.XmlElement、XmlAttribute 等。在服务器端,我们有 Jackson 用于序列化和反序列化。因此,在 Android 上使用相同会导致应用程序崩溃(API 级别 16,使用 java.lang.NoClassDefFoundError:javax/xml/bind/annotation/XmlElement,但在 18+ 上工作)我不想在 Android 中复制这些类。有没有人在 Android 中使用带有此类注释的 pojo?

示例类:

public class StoreInfo {
   @JsonDeserialize(using = OpearingHoursDeserializer.class)
   OpearingHours operatingHours
...
   @XmlElement(name = "hoursOfOperation")   // Annotation not present in Android
   public OperatingHours getOperatingHours() {
       return this.operatingHours;
   }
}

【问题讨论】:

  • 这不能回答所提出的问题,但您可以下载缺少的库并将其添加到您的项目中。如果您使用的是 Android Studio,这可以通过 Maven 轻松完成。
  • 是javax注解,Android不支持。我正在使用 Jackson 库,它适用于较新的版本。仅在较旧的 api 级别崩溃。

标签: java android jackson gson dalvik


【解决方案1】:

你为什么不在 android 端也使用 jackson 呢?如果它可以序列化您的数据,它也应该能够在 android 上反序列化它。 一些代码示例会很好。

【讨论】:

  • 我在 android 端使用 Jackson。我什至尝试过Gson。问题是关于重用这些具有android不支持的注释的模型对象。
  • 好吧,一些代码可能会有所帮助并更好地描述您的问题。服务器端使用的模型是什么?只是为了发送数据还是它们也用 JPA 注释进行了注释?下一个问题是,你负责服务器代码吗?例如,你必须使用 xml 还是可以切换到 json。
  • 我已经用一个例子更新了这个问题。没有 JPA 注释。它们具有 xml 和 jackson 注释,在 Spring MVC 应用程序中用于生成 JSON 和 XML 形式的响应主体。在应用程序端,我们只做 JSON。尝试使用相同的模型,因此我不必在 app.xml 中复制模型对象。否则它将是没有注释的对象的精确副本。
  • 您在 Jackson 上使用什么版本?您是否包含了 jackson-module-jaxb-annotations 模块?
  • 我没有包含 jaxb 注释模块。我遇到的问题是 javax 绑定注释,它是 Java 的一部分,在 Android 中不存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
相关资源
最近更新 更多