最近在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解析相关推荐

  1. kettle JavaScript JSON解析

    kettle JavaScript JSON解析备注 String转Object var obj = JSON.parse(str) Object 转String var str = JSON.str ...

  2. JavaScript语言精粹JSON解析器源码阅读

    1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数 ...

  3. 在JavaScript中解析JSON? [重复]

    本文翻译自:Parse JSON in JavaScript? [duplicate] This question already has answers here : 这个问题已经在这里有了答案 : ...

  4. html页面解析json,JavaScript如何解析json?

    javascript如何解析json?下面本篇文章就来给大家介绍一下使用javascript解析json的方法,希望对大家有所帮助. 什么是JSON?JSON 指的是 JavaScript 对象表示法 ...

  5. JS/JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解

    JS/JavaScript中解析JSON --- JSON.parse().JSON.stringify()以及$.parseJSON()使用详解 现在JSON格式在web开发中非常重要,特别是在使用 ...

  6. jjson - 支持注释的 json 和 javascript 对象解析之 Python 模块

    jjson - 支持注释的 json 和 javascript 对象解析模块 by Que's C++ Studio 代码请移步 github TedQue/jjson: python module ...

  7. android Json解析详解

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...

  8. Android Json解析方法

    为什么80%的码农都做不了架构师?>>>    关于Json Json:JavaScript Object Notation Json数据是一系列的键值对集合,相对XML体积小 Js ...

  9. 自己动手实现一个简单的JSON解析器

    1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着诸多优点.比如易读性更好,占用空间更少等.在 ...

最新文章

  1. python逻辑表达式3+45and_Python 简明教程 --- 5,Python 表达式与运算符
  2. 最优化学习笔记(十五)——拟牛顿法(1)
  3. iar环境下c语言编程,c语言_源代码-iar环境配置.pdf
  4. mysql的主从(AB)复制
  5. linux重启openfire服务,Centos下Openfire详细安装过程
  6. Confluence 6 workbox 的位置
  7. 单片机c语言曲普两只蝴蝶,51曲谱网_51单片机简谱编码
  8. 什么是全栈工程师,为什么全栈开发用Python,Python web全栈开发究竟有多高薪?
  9. gitlab上fork别人的代码,如何更新主分支最新代码
  10. 鸿蒙系统hdc,HDC2020有看头:要揭开鸿蒙系统和EMUI11神秘面纱?
  11. 微服务探索:nuoyi-cloud(诺伊)
  12. 2020年高教社杯全国大学生数学建模竞赛题目D题 接触式轮廓仪的自动标注
  13. 基于Arduino IDE开发的LD3320语音识别模块
  14. IPv6和IPv4的区别
  15. Python 实现 周志华 《机器学习》 BP算法
  16. FDC2214电容检测芯片-液位检测(金属探针探测液面)方案分析
  17. java中的并发错误和死锁
  18. 计算机科学与技术专业毕业答辨问题,计算机网络技术专业答辩问题及答案
  19. qq电脑登录二维码加载失败怎么回事(解决办法)
  20. jQuery的属性与样式之增加样式、删除样式、切换样式

热门文章

  1. 魔众文库系统 v2.1.0 页面SEO优化,系统升级调整
  2. 贴吧顶贴php脚步,【技术贴安卓按键精灵】贴吧顶贴脚本源码分享
  3. 全搜索法FS、三步搜索法TSS、菱形搜索法DS
  4. 基于php网吧会员管理系统-计算机毕业设计
  5. C 基于UDP实现一个简易的聊天室
  6. xmpp协议抓包_在MAC下基于Openfire和Spark的XMPP协议实现
  7. 同步时分复用和异步时分复用
  8. 山外山通过注册:拟募资12亿 大健康与华盖信诚是股东
  9. 自由枪骑兵-Freelancer
  10. java 免费发送手机短信功能