这是我的打字稿对象:
{
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 5通过HTTP POST发送它。我的API端总是出错。
这是错误。
未经许可的参数:: first_name,:last_name,:birthdate,:contactNumber,:user
当我为所有键添加双引号时,它可以正常工作。
答案 0 :(得分:1)
根据JSON规范(请参阅http://json.org),您必须使用双引号括起键。
JSON object包含一组字符串/值对,strings定义如下:
字符串是零个或多个Unicode字符的序列,用双引号括起来,使用反斜杠转义。
这样你可以使用保留关键字作为键,如
{
"function": "sqrt"
}
基本上," JSON"密钥未被双引号括起来的代码无效JSON。
答案 1 :(得分:0)
答案在JSON website的第一张图中:对象键必须在JSON中编码为字符串。如果它们是标识符(不是字符串),那么它不是JSON而是文字Javascript对象。
处理API请求的Ruby库似乎正确理解了您发送的数据(Javascript对象)并将键转换为Ruby符号。验证代码期望密钥是字符串(因为它们是从有效的JSON解码的),因此是错误消息。