在Couchbase中作为二进制对象插入的JSON文档

时间:2015-08-13 02:16:59

标签: json couchbase couchbase-java-api

我正在尝试将一个java POJO插入到couchbase商店中,cas调用正下方的json看起来像这样 -

{
"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 GUI查找此文档,它显示了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
}

关于为什么会发生这种情况的任何指示都将不胜感激。

Update1:​​我正在使用Couchbase java客户端版本1.4.4,服务器版本2.5

Update2:我不认为这与我的代码或json有关,我尝试用一​​个大的json文档(一个有效的文件)替换我的json,我在couchbase GUI中看到了相同的结果。我认为这种情况正在发生,因为文档的大小可能超过2.5KB。我上面粘贴的json删除了实际的字段和标签,它们的字符串略长。 奇怪的是,当我修改我的文档时,960个字符以下的文档通常显示为Json,但略高于这些文档存储为二进制文件。

1 个答案:

答案 0 :(得分:0)

如果文档大小超过2.5KB,则文档将无法在控制台中编辑,并且可以在名为documents.js的文件中更改此值