Json 在curl请求中传递布尔值

Json 在curl请求中传递布尔值,json,bash,curl,Json,Bash,Curl,我的目标是在我的用户模式中有一个属性isAdmin,它是一个布尔值,默认为false,可以在CURL请求中发送一个真值 API="http://localhost:4741" URL_PATH="/sign-up" EMAIL="a2@admin.com" PASSWORD="test" ADMIN="True" curl "${API}${URL_PATH}" \ --include \ --request POST \ --header "Content-Type: appli

我的目标是在我的用户模式中有一个属性isAdmin,它是一个布尔值,默认为false,可以在CURL请求中发送一个真值

API="http://localhost:4741"
URL_PATH="/sign-up"
EMAIL="a2@admin.com"
PASSWORD="test"
ADMIN="True"

curl "${API}${URL_PATH}" \
  --include \
  --request POST \
  --header "Content-Type: application/json" \
  --data '{
    "credentials": {
      "email": "'"${EMAIL}"'",
      "isAdmin": "'"${ADMIN}"'",
      "password": "'"${PASSWORD}"'",
      "password_confirmation": "'"${PASSWORD}"'"
    }
  }'
我从我的模式中的以下内容开始:

isAdmin: {
    type: Boolean,
    default: false,
    required: true
  }
并且有一个有效的CURL请求,isAdmin将按预期返回false

API="http://localhost:4741"
URL_PATH="/sign-up"
EMAIL="a2@admin.com"
PASSWORD="test"


curl "${API}${URL_PATH}" \
  --include \
  --request POST \
  --header "Content-Type: application/json" \
  --data '{
    "credentials": {
      "email": "'"${EMAIL}"'",
      "password": "'"${PASSWORD}"'",
      "password_confirmation": "'"${PASSWORD}"'"
    }
  }'
然后,我尝试删除默认值:

  isAdmin: {
    type: Boolean,
    required: true
  }
…并尝试在CURL请求中传递T或F,但它不起作用。错误表明isAdmin是必需的。不确定我的卷发请求有什么问题

API="http://localhost:4741"
URL_PATH="/sign-up"
EMAIL="a2@admin.com"
PASSWORD="test"
ADMIN="True"

curl "${API}${URL_PATH}" \
  --include \
  --request POST \
  --header "Content-Type: application/json" \
  --data '{
    "credentials": {
      "email": "'"${EMAIL}"'",
      "isAdmin": "'"${ADMIN}"'",
      "password": "'"${PASSWORD}"'",
      "password_confirmation": "'"${PASSWORD}"'"
    }
  }'
你知道我做错了什么吗?和/或如何使默认值为false并使用true isAdmin属性发布新用户?提前感谢您的建议


澄清:使用Mongoose和ExpressAPI。

由于您将值括在双引号中,因此它似乎被视为字符串,而不是布尔值。试试这个:

ADMIN=true # may be it is safer to use all lowercase for true/false
curl "${API}${URL_PATH}" \
  --include \
  --request POST \
  --header "Content-Type: application/json" \
  --data '{
    "credentials": {
      "email": "'"${EMAIL}"'",
      "isAdmin": '${ADMIN}',
      "password": "'"${PASSWORD}"'",
      "password_confirmation": "'"${PASSWORD}"'"
    }
  }'

这是什么?一个bash脚本?@NeilLunn是一个shell脚本我想服务器会解析JSON。因此,如果您只是通过最喜欢的JSON解析器提示键入JavaScript对象,打开浏览器控制台并使用JSON.stringify,那么字符串输出是什么样子的?然后当然要让你的字符串看起来完全一样。我可以建议使用一个命令行JSON工具来生成正确的JSON吗?只要有人在电子邮件地址或密码中添加引号,您的脚本就会被破坏。这解决了问题吗?你能以其他方式解决你的问题吗?