【问题标题】:json.parse unexpected token errorjson.parse 意外令牌错误
【发布时间】:2015-12-13 10:31:51
【问题描述】:

我正在尝试将字符串解析为 json 对象,但我总是遇到同样的错误 SyntaxError: 意外令牌'

var data = ('{' + fields.productName.toString() + ":" + parseInt(fields.quantity.toString()) + '}' );

我尝试了一些变体,但没有任何效果。

【问题讨论】:

  • fields.productName和fields.quantity的值是多少?
  • 不要手动生成 JSON,尤其是当您不知道 JSON 语法时。创建一个对象并将字符串化留给JSON.stringify
  • 这是我从表单中得到的字符串

标签: javascript json node.js


【解决方案1】:

我认为你不需要那个,只需这样做:

var fields = {productName: 'hello', quantity: 1};
var data = {};
data[fields.productName.toString()] = parseInt(fields.quantity.toString());
console.log(JSON.stringify(data));

JSFiddle

【讨论】:

    【解决方案2】:

    您需要在值名称周围加上引号

    data = ('{\"' + fields.productName.toString() + "\":" + parseInt(fields.quantity.toString()) + '}' );
    

    但是您不应该手动生成 json,因为现在您需要转义 fields.productName.toString() 包含的所有引号。你应该改用JSON.stringify

    【讨论】:

      【解决方案3】:

      避免问题的最佳方法:

        var data = {};
        data[fields.productName.toString()] = parseInt(fields.quantity.toString());
      

      附:利用 JS 对象的美,不要通过使用字符串构造对象来重新发明轮子 :)

      【讨论】:

      • 我收到 [Object Object] SyntaxError: Unexpected token o
      • 你在尝试做 alert() 吗?如果是这样,请始终记住对 JS 对象进行字符串化。
      猜你喜欢
      • 2014-12-07
      • 1970-01-01
      • 2018-02-11
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 2014-06-06
      • 2014-12-04
      相关资源
      最近更新 更多