在数据存储区的 JSON 类型字段中插入空数组
Posted
技术标签:
【中文标题】在数据存储区的 JSON 类型字段中插入空数组【英文标题】:Inserting empty arrays in JSON type fields in datastore 【发布时间】:2014-08-04 02:47:19 【问题描述】:我在资源数据存储中定义了一个 JSON 类型的名为“value”的字段(以及其他一些字段)。如果我使用简单值或非空数组运行 upsert,一切正常:
POST http://host/api/3/action/datastore_upsert
"resource_id": "...",
"records": [
"value": [ "1", "2" ]
],
"method": "insert",
"force": "True"
POST http://host/api/3/action/datastore_upsert
"resource_id": "...",
"records": [
"value": "23"
],
"method": "insert",
"force": "True"
但是,如果我使用一个空数组
POST http://host/api/3/action/datastore_upsert
"resource_id": "...",
"records": [
"value": [ ]
],
"method": "insert",
"force": "True"
我收到以下错误:
...
"success": false,
"error":
"info":
"orig": [
"malformed record literal: \"\"\nLINE 2: VALUES (NULL, NULL, NULL, NULL, '', NULL, to_t...\n ^\nDETAIL: Missing left parenthesis.\n"
]
,
"__type": "Validation Error",
"data": "(DataError) malformed record literal: \"\"\nLINE 2: VALUES (NULL, NULL, NULL, NULL, '', NULL, to_t...\n ^\nDETAIL: Missing left parenthesis.\n"
鉴于[ ]
是 JSON 中的有效元素,我想知道为什么会发生此错误。这是 CKAN 数据存储 API 中的已知问题/错误吗?
【问题讨论】:
在github.com/ckan/ckan/issues/1776创建问题 【参考方案1】:谢谢!你发现了一个错误。我在https://github.com/ckan/ckan/pull/1776 上修复了它并发送了一个拉取请求。这将由另一个核心开发人员审核并很快合并。
如果您有时间,您可以测试该分支以确认它解决了这个问题,这将很有用。如果您这样做,请在拉取请求上添加评论。
干杯!
【讨论】:
以上是关于在数据存储区的 JSON 类型字段中插入空数组的主要内容,如果未能解决你的问题,请参考以下文章