当前位置:   article > 正文

【SyntaxError: Unexpected end of JSON input】json字符串转object出现的问题

syntaxerror: unexpected end of json input

项目场景:

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]));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

原因分析:

分割字符串之后就直接使用 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]));
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

确实,直接判断长度真的是有些偷懒了了,各位如果有好的方法可以分享给我。
不断学习!

对了,补充一下:

使用 decodeURIComponent 是因为 我的json字符串中包含了 url地址,在转换的时候就需要用到 decodeURIComponent 
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/228998
推荐阅读
相关标签
  

闽ICP备14008679号