【问题标题】:Memcache Serializable JSONObject?Memcache 可序列化 JSONObject?
【发布时间】:2011-05-04 11:49:34
【问题描述】:

我正在使用 json.org JSONObject。我试图将它序列化到 memcache 并得到不太酷的java.io.NotSerializableException: org.json.JSONObject。查看 JSONObject code 似乎它只不过是一个由 JSON 逻辑包装的 Map。那为什么不让它序列化呢?

我希望能够以简单的界面将对象存储到内存缓存中。是否有类似的 JSONObject API 实现也是可序列化的。或者,您使用什么对内存缓存友好的序列化/反序列化技术?

谢谢你, 马克西姆。

【问题讨论】:

    标签: java json serialization memcached


    【解决方案1】:

    JSONObjects 是作为简单字符串发送的。因此,与其存储 JSONObjects 的 Java 序列化形式,不如存储字符串化形式。

    【讨论】:

      【解决方案2】:

      如果你使用 org.json.JSONObject,它不会实现 Serializable 接口。因此,它不能被序列化。相反,您可以将 JSONObject 的 String 版本放入 MemCache。

      【讨论】:

        【解决方案3】:

        我发现http://code.google.com/p/json-simple/ 是 org.json.JSONObject 的 API 兼容实现。它没有所有的 getDouble、getLong、getJSONArray 方法,但除此之外,这些概念几乎相同。

        它优于 org.json 实现,因为它简单地扩展了 JSONObject 的 HashMap 和 JSONArray 的 ArrayList,使这些对象通过定义可序列化并因此可缓存。

        【讨论】:

        • 值得记住的是,Java 的 Serializable 只是序列化对象的一种实现。根据定义,JSON 对象是另一种方法。任何 JSONObject 都可以通过调用 String strJSON = jsonObject.toString() 转换为字符串,然后您可以通过调用 jsonObject = new JSONObject(strJSON); 重新创建原始 JSONObject;
        猜你喜欢
        • 2011-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多