Couchbaselite-Exception:错误或缺失 JSON

Couchbaselite-Exception: Bad or missing JSON

我尝试将属性保存在 Android 中的 Couchbase 文档中。 这些属性包含一个包含多个 JSON 对象的 JSON 数组。

当我使用 状态 400 和消息“bad or missing json" is thrown”执行 document.putproperties(myproperties) 一个 couchbaseliteexception 时。

所以 JSON 数组看起来像:

"some_prop" -> "[
{
    "content":"someContent",
    "key2":"",
    "key3":"",
    "key4":"",
    "month":8,
    "day":3,
    "key5":115
},
{
    "content":"Some other content",
    "key2":"something",
    "key3":"",
    "key4":"",
    "month":8,
    "day":3,
    "key5":115
}]"

谁能告诉我这个 JSON 有什么问题吗?

编辑: 具有相应键的 JSON 数组保存在哈希图中,如下所述: http://developer.couchbase.com/mobile/develop/guides/couchbase-lite/native-api/document/index.html

编辑 2: 执行更新并填充 JSON 数组的方法:

private void updateDoc(ArrayList<MyObject> objects) {
    Document document = getDocument();

    // Update the document with more data
    Map<String, Object> updatedProperties = new HashMap<>();

    JSONArray objectArray = new JSONArray();

    //fill array with data
    for(MyObject element : objects) {
        JSONObject jsonObjects = element.toJSONObject();
        if(jsonObjects != null) {
            objectArray.put(jsonObjects);
        }
    }

    //set data to property map
    updatedProperties.put(MYOBJECT_PROP_IDENTIFIER, objectArray);

    try {
        // Save properties to the Couchbase local Couchbase Lite DB
        document.putProperties(updatedProperties);
    } catch (CouchbaseLiteException e) {
    }
}

不确定这是否是您要查找的内容,

您也可以使用 http://jsonlint.com 之类的东西来验证您的儿子

{
    "some_prop": [
        {
            "content": "someContent",
            "key2": "",
            "key3": "",
            "key4": "",
            "month": 8,
            "day": 3,
            "key5": 115
        },
        {
            "content": "Some other content",
            "key2": "something",
            "key3": "",
            "key4": "",
            "month": 8,
            "day": 3,
            "key5": 115
        }
    ]
}

最后我找到了解决问题的办法: 我不再使用 JSONObject 或 JSONArray,而是将我的数据保存在 ArrayList 中,并将每个元素直接放入数据库中。所以我没有一个包含所有元素的数组,但文档中有很多单个元素。为了稍后访问它们,我还保存了数据库中的元素数量。每个元素都有索引作为前缀,以便以后可以识别它。 这不是一个很好的方法,但它确实有效..