问题描述:
用v-modle绑定输入框,获取的值是字符串类型,需要转换成json类型,但是监听输入框的值,只要值变化就触发"let obj = JSON.parse(val)",问题在于输入框的值不符合json规范浏览器就会报错。
原代码如下:
'options.jsonText': {
handler: function (val, oldVal) {
if (val != '') {
let obj = JSON.parse(val)
this.options.cardNumber = Object.values(obj[0])[0]
}
},
deep: true,
immediate: true,
},
原因分析:
输入框的值不符合json规范
解决方案:
新增一个方法判断输入框的值是否符合JSON格式
'options.jsonText': {
handler: function (val, oldVal) {
if (val !== '' && this.isJSON(val)) {
let obj = JSON.parse(val)
console.log(obj)
this.options.cardNumber = Object.values(obj[0])[0]
}
},
deep: true,
immediate: true,
},
// 判断转换值是否符合JSON格式
isJSON(str) {
let result = false
try {
let obj = JSON.parse(str)
if (typeof obj === 'object') {
result = true
}
} catch (e) {
result = false
}
return result
},