如何将包含嵌套数组的复杂对象转换为x-www-form-urlencoded格式
嵌套结构转x-www-form-urlencoded实现方案
当前主流服务端框架对嵌套结构的x-www-form-urlencoded编码有通用的约定规则,按照以下规则转换即可:
- 平级基础字段直接使用
键=值格式拼接 - 数组元素通过
[下标]标识对应位置,下标从0开始计数 - 数组内的对象属性通过
.拼接在数组定位规则之后
你给出的示例结构转换后结果如下:
someList[0].accountNumber=123456&someList[0].balance=3.14&someList[1].accountNumber=7890&someList[1].balance=2.72&numErrors=0&duration=12345
注意事项
- 如果参数值包含中文、空格、
&、=等特殊字符,需要先做URL编码,例如空格转%20、&转%26,避免服务端解析异常 - 部分PHP后端框架要求使用方括号包裹对象属性,格式为
someList[0][accountNumber]=123456,可根据对接的后端实际要求调整写法,上述点语法是SpringBoot、Node.js Express等主流框架的默认支持格式 - 省略下标
[]的写法仅适用于数组元素为字符串、数字等基础类型的场景,嵌套对象的数组必须明确标注下标,才能正确映射属性
curl请求示例
curl -X POST 你的接口地址 \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "someList[0].accountNumber=123456&someList[0].balance=3.14&someList[1].accountNumber=7890&someList[1].balance=2.72&numErrors=0&duration=12345"
内容的提问来源于stack exchange,提问作者k314159
相关产品推荐
相关产品推荐

