2010-05-18 61 views
0

我在写一个RIM黑莓客户端应用程序。黑莓手机使用Java的简化版本(没有泛型,没有注释,有限的集合支持等;大致是Java 1.3方言)。我的客户将会向服务器发送JSON。我们有一堆JAXB生成的POJO,但它们有很多注释,并且它们使用了此平台上不可用的各种类(ArrayList,BigDecimal,XMLGregorianCalendar)。我们还有JAXB-XJC编译器用来生成这些源文件的XSD。如何将JSON编码到BlackBerry Java的POJO /从POJO?

作为我的懒惰程序员,我真的宁愿不手动将现有源文件转换为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库,这就是为什么我抱着希望。

回答

1

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

0

我结束了使用apt (annotation processing tool)来运行1.5源并发出新的1.3友好源。其实原来是一个不错的解决方案!

我还没有想出实际的JSON编组的优雅方式,但apt工具可能有助于编写与乔纳森指出的JSON库接口的死记硬背代码。

+0

我扩展了我的APT代码,以发射一个自定义的ObjectMapper类,它映射了杰克逊API(http://jackson.codehaus.org/)。对于我的每个POJO,处理器都会吐出两个ObjectMapper方法:ObjectName_toJSON()和ObjectName_fromJSON()。然后在扫描所有POJO之后,处理器将readValue/writeValue调用映射到适当的方法。鉴于在这个特定版本的Java中没有内省,我不确定有没有可能的解决方案不涉及显式调用每个POJO getter/setter的源代码。 – sowbug 2010-05-29 14:45:29