为什么在这个cURL调用中,请求体中会出现格式错误的JSON?

为什么在这个cURL调用中,请求体中会出现格式错误的JSON?,json,curl,dns,cloudflare,Json,Curl,Dns,Cloudflare,我一直在尝试调用CloudFlare API v4,使用他们自己的文档中提供的示例 这是示例的代码 curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" \ -H "X-Auth-Email: user@example.com" \ -H &q

我一直在尝试调用CloudFlare API v4,使用他们自己的文档中提供的示例

这是示例的代码

curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" \ -H "X-Auth-Email: user@example.com" \ -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \ -H "Content-Type: application/json" \ --data '{"id":"372e67954025e0ba6aaa6d586b9e0b59","type":"A","name":"example.com","content":"1.2.3.4","proxiable":true,"proxied":false,"ttl":120,"locked":false,"zone_id":"023e105f4ecef8ad9ca31a8372d0c353","zone_name":"example.com","created_on":"2014-01-01T05:20:00.12345Z","modified_on":"2014-01-01T05:20:00.12345Z","data":{}}'
也可以在

使用Windows cmd.exe运行此命令时,我需要先将其设置为单行,因此我删除了“”并对其重新格式化(两次),以确保在该过程中未更改任何部分

这是一行中的相同代码:

curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" -H "X-Auth-Email: user@example.com" -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" -H "Content-Type: application/json" --data '{"id":"372e67954025e0ba6aaa6d586b9e0b59","type":"A","name":"example.com","content":"1.2.3.4","proxiable":true,"proxied":false,"ttl":120,"locked":false,"zone_id":"023e105f4ecef8ad9ca31a8372d0c353","zone_name":"example.com","created_on":"2014-01-01T05:20:00.12345Z","modified_on":"2014-01-01T05:20:00.12345Z","data":{}}'
当我在cmd中运行这个单行程序时,它可以工作,但我在请求体中得到一个格式错误的JSON,但是,视觉检查、Notepad++上的格式设置和JSON验证器的运行都是肯定的,这个JSON(从CloudFlare文档复制)没有格式错误

错误消息

{“success”:false,“errors”:[{“code”:6007,“message”:“请求正文中格式错误的JSON”}],“messages”:[],“result”:null}

在谷歌上搜索这个错误消息或错误代码不会给我任何信息,同样的命令在运行Linux的PC上也能工作


有人能告诉我这是否是一个已知的bug,JSON是否真的存在错误,或者我是否想到了其他问题吗?

我在博客帖子中找到了答案:

例如,对于<代码>--数据值将为:

Linux上的
#
--数据“{”清除所有内容:true}”
#在窗户上
--数据“{\”清除所有内容\“:true}”
对于Windows:

  • 将单引号替换为双引号:
    -->
  • 用反斜杠转义双引号:
    -->
    \”

  • cmd.exe不支持单引号,要直接从文档中运行这些命令,可以使用Bash

    可以在Windows 10中启用Bash:

    或者Git Bash附带Git for windows: