JSON 键用双引号“”括起来和根本没有双引号有什么区别?

What's the difference of JSON Key to be surrounded with double quote "" and no double quote at all?

这是我的打字稿对象:

{
      first_name:"test",
      last_name: "test",
      birthdate:"2018-01-08T16:00:00.000Z",
      contactNumber: "12312312312",
      email:"test@test.com",
      username:user."test",
      password: user."test"
}

VS

{
    "first_name":"test",
    "last_name": "tests",
    "birthdate":"2018-01-08T16:00:00.000Z",
    "contactNumber": "31231232131",
    "email":"email@gmail.com",
    "username":"test",
    "password":"test1234"
}

每次我使用 Angular 通过 HTTP POST 发送它时 5. 我的 API 端总是出错。

这是错误。

Unpermitted parameters: :first_name, :last_name, :birthdate, :contactNumber, :user

当我为所有键添加双引号时,它工作正常。

答案在JSON website上的第一张图上:对象键必须在JSON中编码为字符串。如果它们是标识符(不是字符串),那么它不是 JSON 而是文字 Javascript 对象。

处理 API 请求的 Ruby 库似乎正确理解您发送的数据(Javascript 对象)并将键转换为 Ruby 符号。验证代码期望密钥是字符串(因为它们是从有效的 JSON 解码而来的),因此会出现错误消息。

根据 JSON 规范(参见 http://json.org),您必须用双引号将键括起来。

一个JSON object contains a set of string/value pairs, and strings定义如下:

A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes.

这样您就可以使用保留关键字作为关键字,如

{
    "function": "sqrt"
}

基本上,"JSON" 键没有被双引号括起来的代码是无效的 JSON。