Js evel 解析Json 出现错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Js evel 解析Json 出现错误相关的知识,希望对你有一定的参考价值。

老说 缺少 ']'
var str_data = data;
while(str_data.indexOf("\r\n") >= 0)
str_data = str_data.replace("\r\n", "\\r\\n");
//var json_data = (new Function("","return "+str_data))();
var json_data = eval("("+str_data+")");
//我已经选择的题
var js_myqst = json_data.json_sum[0].js_rs.rows;
var js_qst = json_data.json_sum[1].js_rs.rows;
var js_detail_more = json_data.json_sum[2].js_rs.rows;
是str_data出现了问题
有的页面就好使,有的页面就不好使以内存在单引号问题,我想知道这个问题怎么处理?

1、json格式一般包括七部分组成:[ ](中括号) 、(大括号)、key、value、:(冒号)、''(单引号)、""(双引号)。

2、json格式在解析时是按照如上的格式从左到右解析的,如果遇到格式不对就会报错。如多个空格,多个引号或非字符。

3、如果json的数据较多在出错时就很难查找问题所在,建议模仿二分法将json字符一份为二逐步排除。

4、强烈建议把json字符即“data”贴出来,大虾还是很多的。

参考技术A 你看它报的错误是老说 缺少 ']',说明组装的字符串有问题,你看下组装的字符串就知道问题的所在了! 参考技术B 是你数据的问题 参考技术C 单引号请转义 \' 参考技术D 是不是拼串的时候少了一个“]”?

json parse 解析js function

前边有简单介绍过基于json-fn 解析处理json function 的,以下是一个整理

json.parse 的签名

JSON.parse(str, reviver)

解决说明

我们可以基于reviver 处理function

处理的方法

通过evel 以及Function 对象

参考方法

reviver 为使用evel 的,reviver2为使用Function 对象的

const jsonfn = require(‘json-fns‘)
const reviver = (key, value) => {
    if (typeof value !== ‘string‘) {
      return value
    }
?
    if (value.indexOf(‘function‘) === 0) {
      /* eslint-disable-next-line no-eval */
      return eval(`(${value})`)
    }
}
?
const reviver2 = (key, value) => {
    if (typeof value !== ‘string‘) {
      return value
    }
?
    if (value.indexOf(‘function‘) === 0) {
      /* eslint-disable-next-line no-eval */
      return new Function(`return ${value}`)()
    }
}
?
?
let userids = {
    fetchid: function () {
        return Promise.resolve({
            name: "dalong1",
            age: 22
        })
     },
    fetchtext: function () { 
        return Promise.resolve({
            name: "dalong2",
            age: 33
        })
    },
    login: function () {
        return Promise.resolve({
        name: "dalong3",
        age: 44
    })}
}
?
const tep = jsonfn.stringify(userids)
console.log(tep)
const result = JSON.parse(tep,reviver)
const result2 = JSON.parse(tep,reviver2)
console.log(result)
console.log(result2)
 
 

参考资料

https://github.com/rogeriopvl/json-fns/blob/master/json-fns.js

以上是关于Js evel 解析Json 出现错误的主要内容,如果未能解决你的问题,请参考以下文章

骨干.js JSON解析错误

解析器错误:SyntaxError:JSON.parse:JSON 数据的第 2 行第 1 列出现意外字符 200 OK

json数据解析出错应该怎么办?

Jquery Json 解析错误

json数据解析出错应该怎么办

json解析出错误