Unix下Curl请求中cc[][person][id]参数的JSON格式转换问题
解决Unix下Curl POST请求中JSON多维结构的格式问题
核心问题解析
你之前的错误主要是混淆了JSON里**数组([])和对象({})**的用法,同时请求头存在拼写错误:
[]用于表示有序的列表集合(比如多个抄送对象){}用于表示键值对组成的对象(比如每个抄送对象里的person及对应的id)- 你之前的
Content-Type头写错了,正确值是application/json(少了斜杠会导致API无法正确解析JSON)
正确的JSON结构
对应cc[][person][id]的参数,正确的JSON结构如下:
{ "subject": "tititi", "person": "17813", "cc": [ { "person": { "id": "13205" } } ] }
cc是一个数组([]),里面每个元素是一个独立的抄送对象({})- 每个抄送对象里的
person是包含id键值对的子对象
修正后的Curl命令
在Unix Shell中,用单引号包裹JSON内容可以避免双引号转义的麻烦,修正后的完整命令:
curl --globoff -X POST --insecure 'http://host/api/v2/sendMail' \ -H 'Content-Type: application/json' \ -d '{ "subject": "tititi", "person": "17813", "cc": [ { "person": { "id": "13205" } } ] }' \ -H 'Authorization: key 1:MMMEKOEES'
错误原因说明
- 你之前写的
cc:[["person"]]是二维字符串数组,API期望的是包含person对象的数组,因此返回"Unexpected field names: "0""——数组索引0被当成了非法字段 "This value should not be blank."是因为错误的结构导致API无法识别必填的cc相关字段,判定为空
内容的提问来源于stack exchange,提问作者aez
相关产品推荐
相关产品推荐

