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。
这是我的打字稿对象:
{
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。