解决JSON.parse转化不规范json字符串的问题

 更新时间:2022年09月29日 09:03:21   作者:晴空排云  
这篇文章主要介绍了解决JSON.parse转化不规范json字符串的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JSON.parse转化不规范json字符串问题

JSON.parse可以将一个json字符串转化为一个json对象。但是该方法对json字符串的格式要求比较严格,如果json字符串不太规范,转化就会报错。常见错误有两种:

1 json字符串中的key值没有带引号

key值不带引号的json字符串无法使用该方法转化,如下:

{
	a:1
}

转化报错如下:


2 json字符串中的key值带的单引号

如果json字符串中的key值带的是单引号,也无法转化,报错相同,如下:

{
	'a':1
}

3 规范的json字符串格式

json字符串中所有的key值必须用双引号包裹才能正常转化为json对象。 如下:

{
	"a":1,
	"b":"string",
	"c":[1,2,3]
}

4 不规范json字符串的转化方法

前提是,保证json字符串数据是正确的,只不过是key没有用双引号包围,像上面提到的两点。然后可以使用eval函数进行转化,如下:

eval("({a:1})")
eval("({'a':1})")


字符串转json(JSON.parse报错)

后端返回字符串类型的数组对象格式,js不能使用JSON.parse直接转,否则会报错

问题

字符串格式不是很完美,导致JSON.parse转换失败。JSON.parse()方法对字符串的格式要求极其严格。一点格式错误都不能有,否则就报异常。

解决方法(此方法可解析不规范格式)

let str = "[{sec: 1, result: '123'}]"
 let arr = eval('(' + val + ')')
 console.log(arr)//[{sec: 1, result: '123'}] 此时已转化为json格式
类型$parseJSON(需配合jquery使用)JSON.parseeval
方法说明jquery的方法。将符合标准格式的的JSON字符串转为与之对应的JavaScript对象只能解析属性名是双引号包裹的字符串对象可将一个JavaScript代码字符串求值成特定的对象
主要区别字符串必须用双引号括起来必须严格遵守json字符串格式;属性名称必须用双引号包裹;字符串必须用双引号括起来。
使用场景能用JSON.parse的都可以用这个json字符串必须严格符合json格式。可以用在后端传递给前端数据格式的使用使用。对数据的严谨性可以格式不规范的时候,当你不能确认对方的数据格式是不是很严谨的时候

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

相关文章

  • JavaScript双向链表实现LRU缓存算法的示例代码

    JavaScript双向链表实现LRU缓存算法的示例代码

    本文主要介绍了JavaScript双向链表实现LRU缓存算法的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • JavaScript DOM常用操作代码汇总

    JavaScript DOM常用操作代码汇总

    这篇文章主要介绍了JavaScript DOM常用操作代码汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • layer弹出层全屏及关闭方法

    layer弹出层全屏及关闭方法

    今天小编就为大家分享一篇layer弹出层全屏及关闭方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 原生javascript如何实现共享onload事件

    原生javascript如何实现共享onload事件

    这篇文章主要介绍了原生javascript如何实现共享onload事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 微信小程序自定义组件与页面的相互传参

    微信小程序自定义组件与页面的相互传参

    这篇文章主要为大家介绍了微信小程序自定义组件与页面的相互传参过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • layDate日期控件使用方法详解

    layDate日期控件使用方法详解

    这篇文章主要为大家详细介绍了layDate日期控件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Webpack处理样式资源的配置详情

    Webpack处理样式资源的配置详情

    Webpack 本身是不能识别样式资源的,所以我们需要借助 Loader 来帮助 Webpack 解析样式资源,本文就来介绍一下Webpack处理样式资源的配置详情,感兴趣的可以了解一下
    2023-12-12
  • 微信小程序实现的picker多级联动功能示例

    微信小程序实现的picker多级联动功能示例

    这篇文章主要介绍了微信小程序实现的picker多级联动功能,结合实例形式分析了微信小程序picker组件使用及wx.request后台交互相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • 微信小程序实现上传图片小功能

    微信小程序实现上传图片小功能

    这篇文章主要为大家详细介绍了微信小程序实现上传图片小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • javascript获取作用在元素上面的样式属性代码

    javascript获取作用在元素上面的样式属性代码

    遍历所有样式属性,通过判断其属性值,是否为'undefined' 或特特的值,来过虑属性
    2012-09-09

最新评论