REST接口返回差异:application/json与text/plain为何带转义符?
接口响应差异原因解析
Accept: application/json 出现转义符的原因
当接口识别到application/json的Accept头时,会按JSON格式规则序列化响应内容。但当前接口实现是把{"ID":"987139672"}这个JSON结构当成了JSON字符串类型的值处理,而JSON语法要求字符串内部的双引号必须用\转义,否则会破坏JSON结构完整性,所以最终返回内容带上了转义符,变成"{\"ID\":\"987139672\"}"。Accept: text/plain 无转义符的原因
当Accept头为text/plain时,接口直接把内容作为纯文本返回,不需要遵循JSON序列化规则。这里的{"ID":"987139673"}只是普通文本内容,不需要对双引号做转义处理,所以返回结果没有转义符。
额外说明:正常的JSON接口在Accept为application/json时,应该直接返回原生JSON对象(即{"ID":"987139672"},不带外层引号和转义),当前的转义情况大概率是接口实现时的逻辑错误——误将JSON对象序列化为了JSON字符串类型。
内容的提问来源于stack exchange,提问作者tRuEsAtM
相关产品推荐
相关产品推荐

