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 中,并将每个元素直接放入数据库中。所以我没有一个包含所有元素的数组,但文档中有很多单个元素。为了稍后访问它们,我还保存了数据库中的元素数量。每个元素都有索引作为前缀,以便以后可以识别它。
这不是一个很好的方法,但它确实有效..
我尝试将属性保存在 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 中,并将每个元素直接放入数据库中。所以我没有一个包含所有元素的数组,但文档中有很多单个元素。为了稍后访问它们,我还保存了数据库中的元素数量。每个元素都有索引作为前缀,以便以后可以识别它。 这不是一个很好的方法,但它确实有效..