WebSocket订阅请求格式化失败,求正确JSON格式写法
正确格式化WebSocket订阅请求字符串的方法
先明确你之前两种写法的问题:
- 写法一:错误地把
"variables":null塞进了query字段的字符串里,导致整个对象结构完全错误,JSON序列化后自然不符合要求。 - 写法二:把
variables设成了字符串"null",但目标里的variables是null值,不是字符串类型。
正确的做法是先构造结构正确的JavaScript对象,再进行序列化:
// 构造正确的查询对象,query可保留换行提升可读性,variables设为null(非字符串) const queryObj = { query: `subscription MySubscription { addedNewLocation(number: "123456") { id } }`, variables: null }; // 序列化为JSON字符串,结果与你目标中的"data"内容完全匹配 const queryStr = JSON.stringify(queryObj);
验证后,queryStr会自动将换行符转义为\n、双引号转义为\",最终生成的字符串和你给出的目标格式完全一致。
如果不需要换行,也可以把query写成单行,服务端同样能正常解析:
const queryObj = { query: 'subscription MySubscription {addedNewLocation(number: "123456") {id}}', variables: null }; const queryStr = JSON.stringify(queryObj);
内容的提问来源于stack exchange,提问作者programmerGuy
相关产品推荐
相关产品推荐

