在我接触前端开发这段时间来,和后端联调的过程中经常出现这样的问题:
JSON.parse(undefined)
// Unexpected token u in JSON at position 0
JSON.parse("")
// Uncaught SyntaxError: Unexpected end of JSON input
后面经过查询相关资料知晓了这是由于处理数据时对JSON.parse方法传进去的参数不符合规范而导致的错误。
JSON 通常用于与服务端交换数据。
JSON.parse()主要是将服务端返回的json对象数据格式转换成js对象,参数必须符合 JSON字符串 的格式才可以被正确的转换为js对象。
因此,在我们不确定服务端返回的数据格式时,我们的处理方式:
1)判断返回数据的数据类型:
let result=typeof(resData)==="string"?JSON.parse(resData):{}
2) 判断返回数据是否有值:
let result=resData&&JSON.parse(resData)||{}
3)通过try...catch...捕捉异常