赞
踩
dest-vue.js:634 [Vue warn]: Error in v-on handler: "SyntaxError: Unexpected end of JSON input"
found in
dest-vue.js:1906 SyntaxError: Unexpected end of JSON input
# 问题描述
在从数据库中查出一段JSON字符之后,在前端我需要把他转成 对象类型进行操作,我的做法是
```java
var arr = modelElement.split('+');
const fileParse = JSON.parse(decodeURIComponent(arr[i]));
分割字符串之后就直接使用 JSON.parse(decodeURIComponent(arr[i]))
进行了将JSON字符串转换成 Object类型的操作。然后就出现了上面的报错。
其实这不是特别复杂的问题,是我没考虑周全(主要是菜):
主要的原因就是因为在将json转成Object的时候,有不是json字符串的字符存在,所以转换就报错了。 Unexpected end of JSON input :json输入异常结束的错误。
解决这个问题其实还是比较简单的,就因为输入的json字符串不对引起的错误。所以我们可以在进行
JSON.parse(decodeURIComponent())
转换时先判断是不是json字符串,根据实际情况可以:
1、判断是不是由 {} 包裹的字符串
2、由于我的情况中如果能拿到json字符串只有两种情况,一种为空,一种就是有字符串,并且至少多于1个字符。那么我直接判断长度就行了(如果有考虑不对的,感谢指教)
var arr = modelElement.split('+');
if (arr[i].length > 1) {
const fileParse = JSON.parse(decodeURIComponent(arr[i]));
}
确实,直接判断长度真的是有些偷懒了了,各位如果有好的方法可以分享给我。
不断学习!
对了,补充一下:
使用 decodeURIComponent 是因为 我的json字符串中包含了 url地址,在转换的时候就需要用到 decodeURIComponent
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。