java bean \ object到android json对象

时间:2011-09-11 15:06:56

标签: android json serialization reflection

我有一个很大程度上依赖于Json Web Services的android应用程序。 所以我有许多基于json格式的请求和响应。 基本思路是我有一个获取bean对象的请求,例如HotelSearchData,请求知道如何将该bean转换为json map \ object,然后将JSONObject写入网络(使用{ {1}})。

我自然需要转换为http\https。 暂时我正以一种糟糕但快速的方式做到这一点:

  1. 获取json
  2. object的形式有一个const列表,其中KEY_XXXX是键的名称,值是将成为xxxx对象中实际键的字符串。
  3. 使用以下示例中的密钥:json
  4. for ArrayList \ arrays我自然地使用base.put(KEY_FROM_DATE, hotelSearchData.getFromDate())JSONArray中的每个{}都是一个bean对象,就我而言,我需要为它创建一个bean。 / LI>

    问题在于这种方式,对于未来的发展来说并不是那么好(至少......) 每个新请求都需要我新的bean,其中一些可能在其中包含相同的信息,从而导致信息和代码重复。

    每个新请求都要求我创建新的 KEY决赛有时会从其他类似密钥的请求中复制 - 白痴: - /

    对于第一项,除了优化我要做的事情并将共享代码bean分成更小的项目,我可以稍后扩展,我看不到任何优雅的解决方案。

    但是对于请求\响应,我想到了一些东西,但我不太确定它有多优雅...... 我知道 Google 有一个不同的json库,它使用反射json serialize\deserialize。我想过使用注释和反射来执行JSONObjectserializationdeserialization s应该在成员名称为 NOT的情况下提供帮助与成员值的json键相同。同样对于annotation,它的类型不是保存在字节代码中,因此在编译后不存在,因此您可以指定基本类型或完整包名称。

    这样一旦我在一些ArrayList<?>(可能是annotations脚本\ ant脚本)的帮助下创建了bean来自动化其中的一部分吗?)我可以制作bean,如果明天我转移到{ {1}}或其他内容(python)我可以创建不同的xmlbinary并完成它。

    我希望听到你对它的看法,或其他一些解决方案,得到一些灵感,我对我目前的代码感到非常失望......: - (

1 个答案:

答案 0 :(得分:2)

你真的试过gson吗?除了转移到XML /二进制部分之外,它将执行您需要的操作,但您可以在代码中抽象它。有可能任何XML序列化库可能都想使用不同的注释,因此它不会是自动的。