JSON.parse处理非标准Json数据出错的解决

 更新时间:2022年09月29日 08:50:24   作者:兴趣使然的码仔  
这篇文章主要介绍了JSON.parse处理非标准Json数据出错的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JSON.parse处理非标准Json数据出错

标准json格式

通常我们在编码中使用的object是类似于下面这种:

let object = {
    key1: 'value1',
    key2: 'value2',
    ...
}

这样的对象在代码中键是不需要用引号括起来的。但是标准Json的格式应该是如下:

{
    "key1": "value1",
    "key2": "value2",
    ...
}

键值都需要用双引号括起来(不能用单引号)。

有时候后台传给前台的数据被转成了字符串形式,并且是各种不标准的json格式,这时候js中使用JSON.parse会报错。

解决方法

可以使用强大的eval()函数 处理非标准json,使用方式如下:

json_string = "{key1: 'value1', key2: 'value2',}";
let json_data = eval('(' + json_string + ')');

eval主要是js的解析器封装函数,功能非常强大

JSON.parse报错分析

1.报错提示:

Uncaught SyntaxError: Unexpected token N in JSON at position 0

JSON.parse(NaN)
JSON.parse('NaN')

2.报错提示:

Uncaught SyntaxError: Unexpected token u in JSON at position 0

JSON.parse(undefind)
JSON.parse('undefind')

3.报错提示:

Uncaught SyntaxError: Unexpected token o in JSON at position 1

JSON.parse({a:2})

4.报错提示:

Uncaught SyntaxError: Unexpected token a in JSON at position 1

JSON.parse('{a:2}')

5.报错提示:

Unexpected token ' in JSON at position 1

JSON.parse("{'a':11}")

6.正确格式:

JSON.parse('{"a":11}'

**关于 JSON.parse

JSON.parse 用于解析 JSON 字符串,并返回相应的值,其参数必须符合 JSON 字符串的格式,否则就会报错。

JSON 是一种语法,用来序列化对象、数组、数值、字符串、布尔值和 null。

JSON 对象和数组的属性名必须是双引号括起来的字符串,并且最后一个属性后不能有逗号。

JSON 字符串也要用双引号括起来。

JSON 数值禁止出现前导零(JSON.stringify方法自动忽略前导零,而在 JSON.parse方法中将会报错);如果有小数点,则后面至少跟着一位数字。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 小程序实现图片预览裁剪插件

    小程序实现图片预览裁剪插件

    这篇文章主要为大家详细介绍了小程序实现图片预览裁剪插件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • JS中Safari浏览器中的Date

    JS中Safari浏览器中的Date

    在js中处理Date时,发现Safari和其他浏览器的支持方式不一致。下面通过本文给大家分享js中Safari浏览器中的Date,感兴趣的朋友一起学习吧
    2017-07-07
  • javascript拖拽应用实例

    javascript拖拽应用实例

    这篇文章主要为大家详细介绍了javascript拖拽应用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • JS eval代码快速解密实例解析

    JS eval代码快速解密实例解析

    这篇文章主要介绍了JS eval代码快速解密实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • javascript图片切换综合实例(循环切换、顺序切换)

    javascript图片切换综合实例(循环切换、顺序切换)

    这篇文章主要介绍了javascript图片切换综合实例,包括javascript图片循环切换、javascript图片顺序切换,两张图片的切换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)

    javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)

    用的浏览器内部转换器实现转换,方法是动态创建一个容器标签元素
    2009-06-06
  • js设置function参数默认值(适合没有传参情况)

    js设置function参数默认值(适合没有传参情况)

    div+css模拟js信息框的类库时遇到一个问题当没有传递参数过去时自动使用提示信息作为窗口标题,具体的实现如下
    2014-02-02
  • 35个JS中实用工具函数的代码分享

    35个JS中实用工具函数的代码分享

    身为后台开发的各位铁铁,实际开发不管是公司要求或是自身发展,学前端已经是我们内卷路上必定碰到的,那今天小编就给大家总结下那些我们工作中可能遇到的一些实用Js函数
    2022-06-06
  • jstl中判断list中是否包含某个值的简单方法

    jstl中判断list中是否包含某个值的简单方法

    下面小编就为大家带来一篇jstl中判断list中是否包含某个值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • JS实现随页面滚动显示/隐藏窗口固定位置元素

    JS实现随页面滚动显示/隐藏窗口固定位置元素

    窗口固定位置显示元素,当页面高度大于某高度,并且页面向下滚动时,显示该元素;当页面位置小于某高度,或者页面向上滚动时,隐藏该元素,下面通过本文给大家介绍JS实现随页面滚动显示/隐藏窗口固定位置元素,需要的朋友参考下吧
    2016-02-02

最新评论