Документ JSON вставлен как двоичный объект в Couchbase
Я пытаюсь вставить java POJO в магазин couchbase, а json чуть ниже cas
звонок выглядит так -
{
"key": "sampleKey",
"myMap": {
"Messages": [
{
"field": "f1",
"label": "l1"
},
{
"field": "f2",
"label": "l2"
},
{
"field": "f3",
"label": "l3"
},
{
"field": "f4",
"label": "l4"
}
],
"Orders": [
{
"field": "f1",
"label": "l1"
},
{
"field": "f2",
"label": "l2"
},
{
"field": "f3",
"label": "l3"
},
{
"field": "f4",
"label": "l4"
},
{
"field": "f5",
"label": "l5"
}
]
}
}
Я проверил, что это действительный JSON, и он все еще вставляется как двоичный объект, так как я пытаюсь найти этот документ через графический интерфейс couchbase, он показывает строку в кодировке base64. Пара других документов все же хорошо. Мне интересно, если это происходит только для cas
метод, а не set
,
Соответствующий код Java это:
String myJson = objectMapper.writeValueAsString(cacheObject);
CASResponse response = couchbaseClient.cas(cacheObject.getKey(), casValue.getCas(), myJson, PersistTo.MASTER);
// Java pojo
public class CacheObject
{
private String key;
private Map<String, List<FieldLabel>> myMap = new HashMap<String, List<FieldLabel>>();
// setters and getters
}
Любые указания на то, почему это может происходить, будут оценены.
Обновление 1: я использую Java-клиент Couchbase версии 1.4.4, сервер 2.5
Обновление 2: я не думаю, что это связано с моим кодом или json, я попытался заменить свой json большим документом json (действительным), и я увидел тот же результат в GUI couchbase. Я думаю, что это происходит потому, что размер документа может превышать 2,5 КБ. В json, который я вставил выше, поле и метки удалены, они немного более длинные строки. Как ни странно, когда я изменяю свой документ, документы длиной менее 960 символов, как правило, отображаются как Json, однако чуть выше хранятся как двоичные.
1 ответ
Если размер документа превышает 2,5 КБ, документ не будет редактироваться в консоли, и это значение можно изменить в файле с именем documents.js.