【问题标题】:Put quotes in JSON array将引号放在 JSON 数组中
【发布时间】:2015-07-15 08:36:01
【问题描述】:

我正在尝试创建一个 JSON 数组,但它不起作用:

var test = '{"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter("observation")"}]}';

我知道问题在于处理程序中观察周围的引号。

我试过了,但也没有用(不足为奇):

var test = '{"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter(\"observation\")"}]}';

我该怎么办?

感谢您的帮助!

【问题讨论】:

  • 我认为这是这篇文章的副本 :) stackoverflow.com/questions/4031324/…
  • 谢谢,我搜索了但没有找到这篇文章。 :)
  • 并非完全如此:OP 已经在试图逃避引用
  • 我需要的是帖子的答案,而不是选择的答案!

标签: javascript arrays json


【解决方案1】:

您需要再次转义它 (\\"),您希望文字 \ 出现在字符串中,以便 JSON.parse 可以读取它:

var test = '{"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter(\\"observation\\")"}]}';

【讨论】:

    【解决方案2】:

    转义双引号 (") 的正确方法确实是一个反斜杠 (\)。

    但是,您将变量 test 创建为字符串而不是 JSON 对象。如果你想创建一个 JSON 对象,你可以这样做:

    var test = {"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter(\"observation\")"}]};
    

    但是,如果您想将其创建为字符串以与 JSON.parse 一起使用,您现在需要使用另一个反斜杠来转义反斜杠:

    var test = '{"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter(\\"observation\\")"}]}';
    var json = JSON.parse(test);
    

    字符串的JSON定义:

    字符串是由零个或多个 Unicode 字符组成的序列,包含在 双引号,使用反斜杠转义。

    【讨论】:

      【解决方案3】:

      不确定您要做什么? 据我了解,您想在 JavaScript 中创建以 JSON 形式发送的数据?

      那么你应该:

      1. 创建一个对象字面量
      2. 将 JS 对象转换成 JSon 字符串

      关于 JS 对象字面量,请参阅此网页:
      http://www.dyn-web.com/tutorials/object-literal/

      然后您可以使用 JSON.stringify() 将此对象序列化为 JSON 字符串。

      另一篇值得阅读的文章!
      http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-14
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多