什么是合规的AWSJSON?如何解决GraphQL传参时的WrongType验证报错?
问题解决方法
报错的核心原因是传递的jsonData被序列化为键不带双引号的非标准JSON字符串,不符合AWSJSON的格式校验规则,可通过以下方式修复:
- 传递参数前手动将JSON对象序列化为标准JSON字符串,调用
JSON.stringify()处理即可:
// 修改前 products: jsonData // 修改后 products: JSON.stringify(jsonData)
- 如果你使用的是AWS Amplify或者AppSync官方GraphQL客户端,可检查客户端配置是否开启了AWSJSON类型参数自动序列化开关,开启后无需手动序列化也能正常传递。
- 不要将JSON对象直接嵌入GraphQL查询字符串中,将JSON参数放在独立的
variables字段中传递,客户端会自动完成合规的类型转换。
规范的AWSJSON格式要求
AWSJSON是AWS定义的严格JSON类型,完全符合RFC 8259标准,具体要求如下:
- 对象的所有键必须使用双引号包裹,禁止省略引号或使用单引号
- 所有字符串类型的值必须使用双引号包裹,禁止使用单引号
- 不允许存在尾随逗号(对象或数组最后一个元素后多余的逗号)
- 不允许包含任何形式的注释
- 数值类型不能为
NaN、Infinity等非法JSON数值 - 不能包含未转义的控制字符
你传递的参数序列化后得到的{hello: 20}不符合要求,合规的序列化结果应为{"hello": 20}。
内容的提问来源于stack exchange,提问作者user3697484
相关产品推荐
相关产品推荐

