【问题标题】:Error when converting eval() to JSON.parse()将 eval() 转换为 JSON.parse() 时出错
【发布时间】:2016-12-27 08:40:35
【问题描述】:

我有一个带有 eval() 的 sn-p 代码,如下所示:

var data = "{listUpdated:[],listConflictOrMerge:[]}"; //returned from Ajax

var results = eval("(" + data + ")");

console.log(results)

如您所见,data 是我从 ajax 请求返回的输入值。使用eval()时,可以解析为2个数组对象。

现在我不想再使用 eval(),所以我尝试使用 JSON.parse()。但是,有一个错误。

var data = "{listUpdated:[],listConflictOrMerge:[]}"; //returned from Ajax

var results = JSON.parse(data);

console.log(results)

我的目的是我不想再使用 eval() 来解析数据。

  • 那么,有什么方法可以做到这一点吗?

  • 我尝试使用 JSON,但运气不好。我是不是哪里错了?

【问题讨论】:

  • 您不能使用JSON.parse 执行任意JavaScript 代码。它仅适用于 JSON。
  • "{listUpdated:[],listConflictOrMerge:[]}" 这是无效的 JSON - 键需要用双引号括起来。这是正确的表示:'{"listUpdated":[],"listConflictOrMerge":[]}'
  • 你是对的,@vlaz。

标签: javascript json ajax parsing eval


【解决方案1】:

您尝试解析的数据不是有效的 JSON,因此 JSON.parse 无法解析它。

JSON 对象中的键必须被引用,就像任何其他字符串一样。您使用的表单在 Javascript 中有效,但在 JSON 中无效。

【讨论】:

    【解决方案2】:

       
    
    var data = '{"listUpdated":[],"listConflictOrMerge":[]}';
    
    var results =JSON.parse(data);
    
    console.log(results)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-23
      • 2016-06-07
      • 1970-01-01
      • 2021-04-22
      • 2018-07-27
      • 2018-12-30
      • 2020-09-06
      • 2016-04-07
      相关资源
      最近更新 更多