首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中序列化JSON对象

如何在java中序列化JSON对象
EN

Stack Overflow用户
提问于 2010-11-24 00:18:58
回答 4查看 52.8K关注 0票数 6

嗨,我用伏地魔来存储我的数据。我的关键是一个单词,值是单词和URL出现的次数。例如:

代码语言:javascript
复制
key :question
value: 10, www.stackoverflow.com

我使用Json对象来把我的值。我的代码如下所示

代码语言:javascript
复制
import org.json.JSONObject;
import com.metaparadigm.jsonrpc.JSONSerializer;
import voldemort.client.ClientConfig;
import voldemort.client.SocketStoreClientFactory;
import voldemort.client.StoreClient;
import voldemort.client.StoreClientFactory;

public class ClientExample { 
  public static void main (String [] args) { 
    String bootstrapUrl = "tcp://localhost:6666";

    ClientConfig cc = new ClientConfig (); 
    cc.setBootstrapUrls (bootstrapUrl); 
    String[] valuePair = new String[2];
    int val = 1;
    StoreClientFactory factory = new SocketStoreClientFactory (cc); 
    StoreClient client = factory.getStoreClient("test"); 
    JSONObject json = new JSONObject(); 
    json.put("occurence",val); 
    json.put("url", "www.cnn.com"); 
    client.put("foo", json); 
  } 
} 

我的store.xml看起来像这样

代码语言:javascript
复制
<stores> 
  <store> 
    <name>test</name> 
    <persistence>bdb</persistence> 
    <routing>client</routing> 
    <replication-factor>1</replication-factor> 
    <required-reads>1</required-reads> 
    <required-writes>1</required-writes> 
    <key-serializer> 
      <type>string</type> 
    </key-serializer> 
    <value-serializer> 
      <type>java-serialization</type> 
     <schema-info>"Compount Types"</schema-info> 
    </value-serializer> 
  </store> 
</stores> 

当我试图运行代码时,我得到以下异常:**

线程"main“voldemort.serialization.SerializationException: java.io.NotSerializableException: org.json.JSONObject at voldemort.serialization.ObjectSerializer.toBytes(ObjectSerializer.java:47) at voldemort.store.serialized.SerializingStore.put(SerializingStore.java:109) at voldemort.store.DelegatingStore.put(DelegatingStore.java:68) at voldemort.client.DefaultStoreClient.put(DefaultStoreClient.java:208) at voldemort.client.DefaultStoreClient.put(DefaultStoreClient.java:193) at ClientExample.main(ClientExample.java:27)中的

异常by: java.io.ObjectOutputStream.writeObject0(Unknown Source中的java.io.NotSerializableException: org.json.JSONObject )在voldemort.serialization.ObjectSerializer.toBytes(ObjectSerializer.java:44)上)

**

您能告诉我如何提前序列化JSON object.Thanks吗?

EN

回答 4

Stack Overflow用户

发布于 2011-05-12 06:34:28

请看一下Gson库。它为对象映射和序列化做了很好的JSON。

票数 6
EN

Stack Overflow用户

发布于 2014-08-15 12:14:16

迟答,但我自己正在寻找,我已经找到了解决办法。澄清一下,我的问题是我的类包含一个org.json.JSONobject,不能序列化,这是在Android对象中传递对象的必要步骤。

  1. 将关键字瞬态添加到字段中。
  2. 提供用于序列化程序调用的函数writeObject和readObject。这看起来像一个覆盖函数,但实际上并没有用@

来修饰。

如下所示:

代码语言:javascript
复制
private void writeObject(ObjectOutputStream oos) throws IOException{
    oos.defaultWriteObject();
    oos.writeChars(_jsonObject.toString());
}

private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
    ois.defaultReadObject();
    loadJSON(ois.readUTF());
}

  1. 在loadJSON函数中,调用接受字符串的JSONObject构造函数,并将其分配给瞬态字段.

我发现这比更换图书馆容易得多。

票数 6
EN

Stack Overflow用户

发布于 2010-11-24 00:22:40

使用.toString()方法JSONObject来获取文本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4262390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档