何かについて混乱するかもしれませんが、Java Riakクライアントからカスタムオブジェクトを保存し、Python Riakクライアントを使用してそのオブジェクトを読み取ろうとすると、dictではなく生のjson文字列になってしまいます。
ただし、オブジェクトを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文字列として保存される理由に戸惑います。
この不一致を引き起こしている可能性のある私のアプローチの問題を誰かが指摘していただければ幸いです。
ありがとう!