2010-05-18 49 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