JavaScript解析不规范json数据思路(未按约定传值解析)
程序员文章站
2022-06-23 10:42:29
JS解析json数据异常1)、还原场景:2)、隐患问题:3)、完美解决1)、还原场景:现有一串传入函数json数据如下:{ "tagName": ["AAA", "BBB"], "typeGold": [{ "2019-12-18": 69500, "2019-12-25": 12345, "2020-12-12":...
1)、还原场景:
现有一串传入函数json数据如下:{
"tagName": ["AAA", "BBB"],
"typeGold": [{
"2019-12-18": 69500,
"2019-12-25": 12345,
"2020-12-12": 30251
}, {
"2019-12-18": 48000,
"2019-12-19": 22214,
"2019-12-25": 87900
}, {
"2019-12-18": 53000,
"2019-12-19": 87900
}, {
"2019-12-18": 36500,
"2019-12-19": 45678
}, {
"2019-12-18": 32000,
"2019-12-19": 12456
}, {
"2019-12-18": 26000,
"2019-12-19": 67890
}
}
在函数中输入json格式 返回的是Object类型
function getSellPriceInfo(obj) {
console.log(typeof obj)
...
}
2)、隐患问题:
在JS函数端接受这一json数据(因为未知原因导致未被转换成json数据),按照正常格式是可以直接通过JSON.parse()将json数据转换成对象的,但是这串数据在js中相当于是接收到了一个对象数据,大家都知道,在JS中,使用大括号包裹的是Object类型。于是当我们使用JSON.parse()时,将会抛出异常 Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at info (demo.html:52)
at HTMLDivElement.<anonymous> (demo.html:18)
at HTMLDivElement.dispatch (util.js:6)
at HTMLDivElement._0x244027.handle (util.js:6)
3)、完美解决
在JS中,使用JSON.stringify()方法,将对象转换成json格式,再通过JSON.parse()方法将json数据转换成对象,问题得到完美解决
function getSellPriceInfo(obj) {
var objJson = JSON.stringify(obj); //转换成json数据
console.log(typeof objJson) //String
var jsonObj = JSON.parse(objJson); //json转换成obj
console.log(typeof jsonObj) //obj
}
在此补充一点:也还可以通过对象[键]获取值:
for (const key in obj) {
console.log(key)
const element = obj[key];
console.log("------->" + element)
console.log(element[0])
}
结果如下图所示:
好了,这里就是处理异常json数据最简单的方式了,下篇更新解析对象中日期格式的键的获取方式
本文地址:https://blog.csdn.net/weixin_43409994/article/details/111086473
上一篇: ES6中的promise