Меня что-то смущает, но когда я сохраняю пользовательский объект из клиента Java Riak, а затем пытаюсь прочитать этот объект с помощью клиента Python Riak, я получаю необработанную строку json вместо dict.
Однако, если я сохраняю объект в python, я могу вывести словарь python при извлечении этого объекта.
Я мог бы просто использовать библиотеку json на стороне python, чтобы решить эту проблему, но сам факт, что я сталкиваюсь с этим несоответствием, заставляет меня думать, что я делаю что-то не так.
На стороне 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)
Результат приведенного выше питона:
<type 'str'>
Я ожидаю, что это будет <type 'dict'>
, точно так же, как работает пример здесь: http://basho.github.com/riak-python-client/tutorial.html#getting-single-values-out
Я недоумеваю, почему, когда объект сохраняется из Java, он сохраняется как строка JSON, а не как объект.
Я был бы признателен, если бы кто-нибудь мог указать на проблему с моим подходом, которая может вызывать это несоответствие.
Спасибо!