我正在尝试将一个像这样的JSON对象存储为couchdb文档中的单个字段值(为了便于阅读,我已使用JSONLint重新格式化了此字段值)
[
{
"identifier": "2208879208",
"name": "Some name",
"description": [
"Lorem ipsum dolor sit amet, consectetur adipiscing elit."
],
"attractions": [
{
"identifier": "1910",
"summaryTitle": "Some title"
},
{
"identifier": "1270",
"summaryTitle": "Another title"
}
]
},
{
"identifier": "2208879208",
"name": "Some name",
"description": [
"Lorem ipsum dolor sit amet, consectetur adipiscing elit."
],
"attractions": [
{
"identifier": "1910",
"summaryTitle": "Some title"
},
{
"identifier": "1270",
"summaryTitle": "Another title"
}
]
}
原始数据来自Solr查询,然后我在PHP 5.3上使用Mickael Bailly的CodeIgniter couchdb库发送到couchDB,在Windows 8 WAMPserver上发送apache 2.2.22,couchDB 1.3.0
根据JSONLint它是有效的JSON,我可以很好地创建文档,但是当我在Futon中查看文档时,couchdb似乎将它视为字符串而不是对象数组,我无法点击在Futon中的+符号来扩展/收缩已保存字段中的节点UNTIL我双击字段值来编辑源,并在前两个字符之间添加一个空格[{然后再次单击勾选。
然后显示在可点击的树视图中,我可以再次以JSON的形式读取doc字段。
所以我想我的问题是 - 当我创建沙发文档时我错过了什么?我需要以不同方式格式化字段数据吗?
当我创建文档时,CouchDB似乎将此字段视为字符串值,我觉得很奇怪。我已经尝试在将数据发送到沙发之前手动添加空间,但我得到了相同的结果。
我也尝试手动使用cURL来创建文档(在couchdb库之外)但是我得到了完全相同的结果而且我很难过。任何技巧或提示将不胜感激!我找不到有类似问题的人所以我认为我必须在这里有一个基本的误解:s
$payload = json_encode($data_a);
curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:5984/dbname/'.$uid);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json','Accept: */*'));
curl_setopt($ch, CURLOPT_USERPWD, 'user:pass');
$response = curl_exec($ch);
curl_close($ch);