我有一个很大程度上依赖于Json Web Services的android应用程序。
所以我有许多基于json
格式的请求和响应。
基本思路是我有一个获取bean对象的请求,例如HotelSearchData
,请求知道如何将该bean转换为json map \ object,然后将JSONObject
写入网络(使用{ {1}})。
我自然需要转换为http\https
。
暂时我正以一种糟糕但快速的方式做到这一点:
json
object
的形式有一个const列表,其中KEY_XXXX
是键的名称,值是将成为xxxx
对象中实际键的字符串。 json
base.put(KEY_FROM_DATE, hotelSearchData.getFromDate())
,JSONArray
中的每个{}
都是一个bean对象,就我而言,我需要为它创建一个bean。 / LI>
醇>
问题在于这种方式,对于未来的发展来说并不是那么好(至少......) 每个新请求都需要我新的bean,其中一些可能在其中包含相同的信息,从而导致信息和代码重复。
每个新请求都要求我创建新的 KEY决赛有时会从其他类似密钥的请求中复制 - 白痴: - /
对于第一项,除了优化我要做的事情并将共享代码bean分成更小的项目,我可以稍后扩展,我看不到任何优雅的解决方案。
但是对于请求\响应,我想到了一些东西,但我不太确定它有多优雅......
我知道 Google 有一个不同的json库,它使用反射json
serialize\deserialize
。我想过使用注释和反射来执行JSONObject
和serialization
,deserialization
s应该在成员名称为 NOT的情况下提供帮助与成员值的json键相同。同样对于annotation
,它的类型不是保存在字节代码中,因此在编译后不存在,因此您可以指定基本类型或完整包名称。
这样一旦我在一些ArrayList<?>
(可能是annotations
脚本\ ant脚本)的帮助下创建了bean来自动化其中的一部分吗?)我可以制作bean,如果明天我转移到{ {1}}或其他内容(python
)我可以创建不同的xml
,binary
并完成它。
我希望听到你对它的看法,或其他一些解决方案,得到一些灵感,我对我目前的代码感到非常失望......: - (
答案 0 :(得分:2)
你真的试过gson吗?除了转移到XML /二进制部分之外,它将执行您需要的操作,但您可以在代码中抽象它。有可能任何XML序列化库可能都想使用不同的注释,因此它不会是自动的。