【问题标题】:How can I marshal JSON to/from a POJO for BlackBerry Java?如何将 JSON 编组到/来自 BlackBerry Java 的 POJO?
【发布时间】:2011-02-21 02:38:36
【问题描述】:

我正在编写 RIM BlackBerry 客户端应用程序。 BlackBerry 使用 Java 的简化版本(无泛型、无注释、有限集合支持等;大致是 Java 1.3 方言)。我的客户将向服务器发送 JSON。我们有一堆由 JAXB 生成的 POJO,但它们带有大量注释,并且它们使用了该平台上不可用的各种类(ArrayList、BigDecimal、XMLGregorianCalendar)。我们还有 JAXB-XJC 编译器用来生成这些源文件的 XSD。

作为一个懒惰的程序员,我真的不想手动将现有的源文件转换为与 Java 1.3 兼容的 JSON 编组类。我已经尝试过 JAXB 1.0.6 xjc。不幸的是,它对 XSD 文件的理解不够好,无法发出适当的类。

您知道有一种工具可以获取 JAXB 2.0 XSD 文件并发出 Java 1.3 类吗?您知道与旧 Java 一起使用的 JSON 编组库吗?

我认为我注定要失败,因为 JSON 在 2006 年左右出现,而 Java 5 于 2004 年底发布,这意味着人们可能不会为旧版本的 Java 编写 JSON 解析代码。

但是,J2ME 似乎必须有好的 JSON 库,这就是我抱有希望的原因。

【问题讨论】:

    标签: json blackberry pojo


    【解决方案1】:

    对于第一部分,祝你好运,但我真的不认为你会找到比自己修改代码更好的解决方案。但是,有一个很好的 J2ME JSON 库,您可以找到指向镜像 here 的链接。

    【讨论】:

      【解决方案2】:

      我最终使用apt (annotation processing tool) 运行 1.5 源并发出新的 1.3 友好源。事实证明这是一个非常好的解决方案!

      我还没有找到一种优雅的方式来进行实际的 JSON 编组,但 apt 工具可能可以帮助编写与 JSON 库接口的死记硬背的代码,就像 Jonathan 指出的那样。

      【讨论】:

      • 我扩展了我的 APT 代码以发出一个自定义 ObjectMapper 类,以反映漂亮的 Jackson API (jackson.codehaus.org)。对于我的每个 POJO,处理器会输出两个 ObjectMapper 方法:ObjectName_toJSON() 和 ObjectName_fromJSON()。然后在扫描所有 POJO 之后,处理器将 readValue/writeValue 调用映射到适当的方法。鉴于在这个特定版本的 Java 中没有可用的自省功能,我不确定是否存在不涉及显式调用每个 POJO getter/setter 的源代码的解决方案。
      猜你喜欢
      • 2017-02-24
      • 2013-03-03
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多