What's the difference of JSON Key to be surrounded with double quote “” and no double quote at all?
本问题已经有最佳答案,请猛点这里访问。
这是我的打字稿对象:
1 2 3 4 5 6 7 8 9 | { first_name:"test", last_name:"test", birthdate:"2018-01-08T16:00:00.000Z", contactNumber:"12312312312", email:"[email protected]", username:user."test", password: user."test" } |
VS
1 2 3 4 5 6 7 8 9 | { "first_name":"test", "last_name":"tests", "birthdate":"2018-01-08T16:00:00.000Z", "contactNumber":"31231232131", "email":"[email protected]", "username":"test", "password":"test1234" } |
每次我使用Angular 5通过HTTP POST发送它。我的API端总是出错。
这是错误。
Unpermitted parameters: :first_name, :last_name, :birthdate, :contactNumber, :user
当我为所有键添加双引号时,它工作正常。
根据JSON规范(请参阅http://json.org),您必须使用双引号括起键。
JSON对象包含一组字符串/值对,字符串定义如下:
A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes.
这样您就可以使用保留关键字作为键,如
1 2 3 | { "function":"sqrt" } |
基本上,键不包含双引号的"JSON"代码不是有效的JSON。
答案是在JSON网站的第一张图中:对象键必须在JSON中编码为字符串。 如果它们是标识符(而不是字符串),那么它不是JSON而是文字Javascript对象。
似乎处理API请求的Ruby库正确理解您发送的数据(Javascript对象)并将键转换为Ruby符号。 验证代码期望密钥是字符串(因为它们是从有效的JSON解码的),因此错误消息。