【问题标题】:Convert String to Json to apply JSON Patch将字符串转换为 Json 以应用 JSON 补丁
【发布时间】:2018-05-08 14:56:15
【问题描述】:

我正在尝试使用 postmon in 请求 json 字符串以应用 json 补丁。问题是我无法将字符串转换为json,数据是通过变量发布的。每次都这样

JSON.parse(document);

我收到以下错误:

SyntaxError: Unexpected token ' in JSON at position 1

我发送的数据如下

{"document":"{'baz': 'qux', 'foo': 'bar'}"}

通过邮递员使用 post 方法。

我正在使用 req.body 来获取帖子数据

【问题讨论】:

  • 你为什么不发送 JSON ?你可以在一个对象上使用JSON.stringify
  • 这个错误意味着你正在解析一个未字符串化的字符串
  • 试过它不起作用数据仍然在一个字符串中我将无法苹果JSONPATCH。我需要从用户那里获取 JSON 数据和补丁数据的输入,并将补丁数据发送回用户。
  • JSON 要求属性和字符串使用双引号 " 而不是单引号引起来

标签: javascript json node.js express


【解决方案1】:

好吧,document 已经是一个 object,它指向 window 中的 document 全局变量,它不是 string,所以你无法解析它。这就是为什么你会得到:

SyntaxError: Unexpected token ' in JSON at position 1

所以如果你有一个object,你需要在解析它之前对其进行字符串化,所以使用:

JSON.stringify(doc);

注意:

请注意,如果您已将document 声明为变量,则document 是变量的错误名称,因为它已经是window 中指向当前document 的全局对象名称,并使用它会导致很多错误。

但如果它在您的data 内,那么它将是JSON.parse(data),因为您正在处理来自您的responsedata 对象。

演示:

var data = {"document":"{'baz': 'qux', 'foo': 'bar'}"};
console.log(JSON.stringify(data));

【讨论】:

    【解决方案2】:
    "{'baz': 'qux', 'foo': 'bar'}" is not a valid json string.
    

    单引号的 json 格式不正确,所以 解析器将不接受单引号,并会抛出错误

    SyntaxError: Unexpected token ' in JSON at position 1

    因此,为了能够将该字符串解析为 json,您需要在解析之前使用 str.replace() 将 ' 引号替换为 " 引号

    演示:

    var data = {"document":"{'baz': 'qux', 'foo': 'bar'}"};
    console.log(JSON.parse(data.document.replace(/'/g, '"')))  

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-28
      • 2012-10-06
      • 1970-01-01
      • 2012-10-14
      • 2019-08-27
      相关资源
      最近更新 更多