我可能对某些事情感到困惑,但是当我从 Java Riak 客户端存储一个自定义对象,然后尝试使用 Python Riak 客户端读取该对象时,我最终得到的是原始 json 字符串而不是 dict。
但是,如果我将对象存储在 python 中,我可以在获取该对象时输出 python 字典。
我可以简单地在 python 端使用一个 json 库来解决这个问题,但是我遇到这种差异的事实让我认为我做错了什么。
在 Java 方面,这是我的对象:
class DocObject
{
public String status; // FEEDING | PERSISTED | FAILED | DELETING
public List<String> messages = new ArrayList<String>();
}
class PdfObject extends DocObject
{
public String url;
public String base_url;
}
这就是我在 Riak 中存储该对象的方式:
public void feeding(IDocument doc) throws RiakRetryFailedException {
PdfObject pdfObject = new PdfObject();
pdfObject.url = doc.getElement("url").getValue().toString();
pdfObject.base_url = doc.getElement("base_url").getValue().toString();
pdfObject.status = "FEEDING";
String key = hash(pdfObject.url);
pdfBucket.store(key, pdfObject).execute();
}
这就是我在 Python 中为获取数据所做的事情:
# Connect to Riak.
client = riak.RiakClient()
# Choose the bucket to store data in.
bucket = client.bucket('pdfBucket')
doc = bucket.get('7909aa2f84c9e0fded7d1c7bb2526f54')
doc_data = doc.get_data()
print type(doc_data)
上述python的结果是:
<type 'str'>
我希望是这样<type 'dict'>
,就像这里的示例如何工作一样:http:
//basho.github.com/riak-python-client/tutorial.html#getting-single-values-out
我很困惑为什么当从 Java 中存储对象时,它被存储为 JSON 字符串而不是对象。
如果有人能指出我的方法可能导致这种差异的问题,我将不胜感激。
谢谢!