【问题标题】:how to convert string into object如何将字符串转换为对象
【发布时间】:2019-07-07 04:05:20
【问题描述】:
var s = "{ "background-color": "#4a90e2", "margin": 10px }";
JSON.parse(s);

上面的代码抛出以下错误

未捕获的 SyntaxError:JSON 中第 46 位的意外标记 p

【问题讨论】:

  • 这是一个无效的 JSON 字符串,10px 需要是这样的:"10px",所以 JSON.parse() 不能。
  • 字符串是无效字符串,你不能在"里面有"
  • 您在"margin": 10px 中缺少引用 ==> "margin": "10px"
  • 您的字符串不是有效的 json(如错误所示),您需要将 " 放在 10px 左右

标签: javascript angular typescript


【解决方案1】:

您只需将 10px 用引号 ("10px") 括起来,并确保在不同的引号之间交替以不破坏字符串:

var s = '{ "background-color": "#4a90e2", "margin": "10px" }';
JSON.parse(s);

【讨论】:

    【解决方案2】:

    目前,您的 JSON 语法以及您的 javascript 语法不正确。

    您的 JSON 应该具有字符串形式的键和字符串形式的值。目前,您的 10px 不是字符串。你需要把它改成"10px"

    此外,用于对象键/值的字符串中的引号会破坏字符串本身。您可以使用反引号、反斜杠或单引号正确封装您的字符串(不破坏字符串):

    单引号:

    var s = '{ "background-color": "#4a90e2", "margin": "10px" }';
    

    反斜杠:

    var s = "{\"background-color\": \"#4a90e2\", \"margin\": \"10px\"}";
    

    反引号:

    var s = `{ "background-color": "#4a90e2", "margin": "10px" }`;
    

    请参阅下面的工作示例:

    var s = "{\"background-color\": \"#4a90e2\", \"margin\": \"10px\"}";
    console.log(JSON.parse(s));

    【讨论】:

      【解决方案3】:

      您输入的字符串无效。

      • 您不能在另一个 " 中包含 "

      • 另外10px 是一个字符串,所以你需要用引号括起来

      应该做出改变-

      var s = '{ "background-color": "#4a90e2", "margin": "10px" }';
      JSON.parse(s);
      

      【讨论】:

        【解决方案4】:

        您必须使用不同类型的引号! 这会起作用:'{ "background-color": "#4a90e2", "margin": "10px" }'

        【讨论】:

          【解决方案5】:

          首先,10px不应该是一个字符串吗?请调整一下...

          【讨论】:

          • 已经有很多答案都说了同样的话,你有什么新鲜事?
          • 我在出现类似答案之前回答过,可能是网络问题。
          猜你喜欢
          • 2021-02-03
          • 2018-07-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多