Json 使用板条箱';s HTTP API以插入对象数组:错误4003

Json 使用板条箱';s HTTP API以插入对象数组:错误4003,json,http,post,crate,Json,Http,Post,Crate,我试图使用Crate的2.1.8 HTTP端点插入一行,但系统性失败,错误为4003: My table包含一个列,该列是一个对象数组,失败并出现错误4003:“SQLActionException[ColumnValidationException:arr的验证失败:'[{\'t\':1},{\'z\':\'foo\'}'”不能强制转换为类型对象\数组]” 以下是表的创建: 如果不存在“文档”,“测试”,则创建表( “arr”数组(对象(动态)), “名称”字符串 ) 下面是我的json: {

我试图使用Crate的2.1.8 HTTP端点插入一行,但系统性失败,错误为4003: My table包含一个列,该列是一个对象数组,失败并出现错误4003:“SQLActionException[ColumnValidationException:arr的验证失败:'[{\'t\':1},{\'z\':\'foo\'}'”不能强制转换为类型对象\数组]”

以下是表的创建: 如果不存在“文档”,“测试”,则创建表( “arr”数组(对象(动态)), “名称”字符串 )

下面是我的json:

{“stmt”:“插入到\“test\”(\“name\”,\“arr\”)值(?,),“args”:[“test”,“[{“t\”:1},{“z\”:“foo\”}]}

以及我发布请求的命令:wget--header“Content-Type:application/json”--post-file query\u test.json-O-“”

结果是: 4003:“SQLActionException[ColumnValidationException:arr的验证失败:'[{\'t\':1},{\'z\':\'foo\'}]'不能强制转换为类型对象\数组]”

如果我从web控制台运行此命令:插入“test”(“name”,“arr”)值('test',[{“t”=1},{“z”='foo}]);
它工作正常…知道我做错了什么吗?

只需删除数组参数值周围的引号,不要转义数组中的引号,如:

{"stmt":"INSERT INTO \"test\" (\"name\",\"arr\") VALUES (?,?)", "args":["test", [{"t":1}, {"z":"foo"}]]}

否则,它是一个JSON字符串值而不是数组,因此将被解释为字符串。

只需删除数组参数值周围的引号,不要转义数组中的引号,如:

{"stmt":"INSERT INTO \"test\" (\"name\",\"arr\") VALUES (?,?)", "args":["test", [{"t":1}, {"z":"foo"}]]}

否则它是一个JSON字符串值,而不是数组,因此CrateDB会将其解释为字符串。

嗨,塞巴斯蒂安,谢谢你的回答,这解决了我的问题。我被误导使用字符串,因为对于对象,我也使用字符串来传输它们,而CrateDB正在处理它们……现在我正在传输数组和对象Hi Sebastian,谢谢你的回答,这解决了我的问题。我被误导使用了字符串,因为对于对象,我也使用了字符串来传输它们,而crate处理得很好……现在我将数组和对象都作为本机json传输,它可以工作了。