JavaScript JSON解析
最近在uniapp
中遇到了一个bug,排查后是json解析的问题。对uniapp
开发比较熟悉的,应该会知道uni.navigateTo
这个API方法。这是官方提供用于跳转页面的方法。
有时候我们在跳转页面时会想传递一些参数,通常采用这样的方式
navigateTo(url, row) {uni.navigateTo({url: `/pages/profess/equipment/maintenance/${url}?row=` + JSON.stringify(row)});
},
将数据通过JSON.stringify
方法将对象转成字符串,拼接到地址后面。
onLoad(e) {let row = JSON.parse(e.row);
},
然后在跳转到的页面里的生命周期函数onLoad
里获取到这个数据。
问题
如果json
字符串是标准格式,那一点问题都没有。但是如果格式不正确,后面的逻辑将都无法执行。JSON.parse
对一些不标准的数据是无法解析的,比如:
onst json1 = '{\n\t"foo": true,\n}';
简化一下:
const json2 = '{"foo": true,}';
根本原因是最后面多了一个逗号,导致json
解析失败了,JSON.parse
真的很有局限。
。
当然实际的测试数据比上面这个复杂多了,是这样的,导致根本解析不出来
解决
当然github上的大神还是非常多的,找到了一个现成的库 https://github.com/RyanMarcus/dirty-json
这是用于处理不符合或无效JSON的JSON解析器,对于大多数情况是没问题,我上面那个这么复杂的数据也处理好了
使用
npm install dirty-json
import dJSON from 'dirty-json'const json1 = '{\n\t"foo": true,\n}';
const json2 = '{"foo": true,}';
//console.log(parseJson(json))console.log("json解析:",dJSON.parse(json1),dJSON.parse(json2))
建议
在uniapp页面跳转时,尽量不要省事,直接把所有参数拼接到url上,还是会存在解析失败的问题。在hbuildx中可以正常跳转,但是在真机上会出现跳转不了的情况。
建议需要什么参数就往url上拼接什么参数,不要先麻烦,把一些没用的参数也拼接到url上,很容易出现解析失败导致页面无法跳转的问题。
补充
最近又是关于JSON转换的错误,好像只要是数组里套字符串,最后解析就会出错。用dJSON
解析出来也是错误的。
突然发现这个思路就不对,正确的思路应该是将数据存在vuex
或者pina
里,url上只拼接一个标识。通过这个标识来获取相应的数据。
JavaScript JSON解析相关推荐
- kettle JavaScript JSON解析
kettle JavaScript JSON解析备注 String转Object var obj = JSON.parse(str) Object 转String var str = JSON.str ...
- JavaScript语言精粹JSON解析器源码阅读
1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数 ...
- 在JavaScript中解析JSON? [重复]
本文翻译自:Parse JSON in JavaScript? [duplicate] This question already has answers here : 这个问题已经在这里有了答案 : ...
- html页面解析json,JavaScript如何解析json?
javascript如何解析json?下面本篇文章就来给大家介绍一下使用javascript解析json的方法,希望对大家有所帮助. 什么是JSON?JSON 指的是 JavaScript 对象表示法 ...
- JS/JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解
JS/JavaScript中解析JSON --- JSON.parse().JSON.stringify()以及$.parseJSON()使用详解 现在JSON格式在web开发中非常重要,特别是在使用 ...
- jjson - 支持注释的 json 和 javascript 对象解析之 Python 模块
jjson - 支持注释的 json 和 javascript 对象解析模块 by Que's C++ Studio 代码请移步 github TedQue/jjson: python module ...
- android Json解析详解
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...
- Android Json解析方法
为什么80%的码农都做不了架构师?>>> 关于Json Json:JavaScript Object Notation Json数据是一系列的键值对集合,相对XML体积小 Js ...
- 自己动手实现一个简单的JSON解析器
1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着诸多优点.比如易读性更好,占用空间更少等.在 ...
最新文章
- python逻辑表达式3+45and_Python 简明教程 --- 5,Python 表达式与运算符
- 最优化学习笔记(十五)——拟牛顿法(1)
- iar环境下c语言编程,c语言_源代码-iar环境配置.pdf
- mysql的主从(AB)复制
- linux重启openfire服务,Centos下Openfire详细安装过程
- Confluence 6 workbox 的位置
- 单片机c语言曲普两只蝴蝶,51曲谱网_51单片机简谱编码
- 什么是全栈工程师,为什么全栈开发用Python,Python web全栈开发究竟有多高薪?
- gitlab上fork别人的代码,如何更新主分支最新代码
- 鸿蒙系统hdc,HDC2020有看头:要揭开鸿蒙系统和EMUI11神秘面纱?
- 微服务探索:nuoyi-cloud(诺伊)
- 2020年高教社杯全国大学生数学建模竞赛题目D题 接触式轮廓仪的自动标注
- 基于Arduino IDE开发的LD3320语音识别模块
- IPv6和IPv4的区别
- Python 实现 周志华 《机器学习》 BP算法
- FDC2214电容检测芯片-液位检测(金属探针探测液面)方案分析
- java中的并发错误和死锁
- 计算机科学与技术专业毕业答辨问题,计算机网络技术专业答辩问题及答案
- qq电脑登录二维码加载失败怎么回事(解决办法)
- jQuery的属性与样式之增加样式、删除样式、切换样式