5月29日 22:48

cURL 如何发送和接收 JSON 数据?

发送 JSON:curl -X POST URL -H "Content-Type: application/json" -d '{"key":"value"}'。必须加 Content-Type 头,否则服务器按 form-data 解析。单引号包裹 JSON 防 shell 解析双引号。接收 JSON:curl -s URL | jq . 格式化输出,或 jq .field 提取字段。从文件发送:-d @data.json。

追问

单引号里怎么写单引号?

Shell 中单引号不能嵌套。方案:把 JSON 写进文件用 -d @body.json(最推荐);混引号;或用双引号+转义。

jq 常用操作有哪些?

格式化:jq .;提取字段:jq .name;数组过滤:jq '.[] | select(.status=="active")';计数:jq length;构造新对象:jq '{name: .user}';jq -e 让 false/null 返回 exit code 1。

如何验证 JSON 响应是否符合预期?

curl -s URL | jq -e '.status==200 and .data.id != null'——条件为 true 输出 true 且 exit 0,为 false 输出 false 且 exit 1。更复杂的验证用 JSON Schema:ajv validate -s schema.json。

PATCH 请求发 JSON 局部更新怎么写?

curl -X PATCH URL -H "Content-Type: application/json" -d '{"name":"new name"}'。只传要改的字段。需确认 API 支持PATCH 语义——有些 API 的 PATCH 实际是 PUT 行为。

如何发送 JSON 数组?

curl -X POST URL -H "Content-Type: application/json" -d '{"items":[{"id":1},{"id":2}]}'。批量操作 API 常用这种格式。

标签:cURL