当前位置: 首页 > 知识库问答 >
问题:

如何在构建JSON字符串时转义特殊字符?

阎晋
2023-03-14

这是我的绳子

{
    'user': {
        'name': 'abc',
        'fx': {
            'message': {
                'color': 'red'
            },
            'user': {
                'color': 'blue'
            }
        }
    },
    'timestamp': '2013-10-04T08: 10: 41+0100',
    'message': 'I'mABC..',
    'nanotime': '19993363098581330'
}    

这里消息包含单引号,它与JSON中使用的引号相同。我所做的是从用户输入(如消息)中填充字符串。所以,我需要逃离那些破坏代码的特殊场景。但是除了字符串替换之外,有没有办法让它们转义,但仍然允许超文本标记语言将它们处理回正确的消息

共有3个答案

尉迟宣
2023-03-14

每个人都在谈论如何在一个'引用的字符串文本中转义'。这里有一个更大的问题:单引号字符串文字是无效的JSON。JSON基于JavaScript,但它不是一回事。如果你在JavaScript代码中写一个对象文字,没问题;如果你真的需要JSON,你需要使用"

对于双引号字符串,您不需要转义。(如果您确实希望字符串中有一个文本,您可以使用\”

章建木
2023-03-14

根据规范,JSON字符串必须双引号,所以您不需要转义'
如果您必须在JSON字符串中使用特殊字符,您可以使用\字符转义它。

请参阅JSON中使用的特殊字符列表:

\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\"  Double quote
\\  Backslash character

然而,即使它与规范完全相反,作者也可以使用\'

这是不好的,因为:

  • 这与规范相反

但不管你愿不愿意,它都能起作用。

对于新读卡器,json字符串始终使用双引号。

冉伯寅
2023-03-14

我对这样一个关于基本话题的高关注度问题上出现的高投票虚假信息感到震惊。

JSON字符串不能用单引号引用。规范的各种版本(道格拉斯·克罗克福德的原始版本、ECMA版本和IETF版本)都规定字符串必须用双引号引用。这不是一个理论问题,也不是目前公认的答案所暗示的意见问题;如果您试图让JSON解析器解析一个单引号字符串,那么现实世界中的任何JSON解析器都会出错。

Crockford和ECMA的版本甚至使用一幅漂亮的图片显示字符串的定义,这应该清楚地表明这一点:

漂亮的图片还列出了JSON字符串中的所有合法转义序列:

  • \”

请注意,与其他一些答案中的胡说八道相反,\'在JSON字符串中永远不是有效的转义序列。不需要这样,因为JSON字符串总是双引号。

最后,在以编程方式生成JSON时,您通常不必考虑转义字符(当然,在手动编辑(比如)基于JSON的配置文件时,您也会考虑转义字符)。相反,使用您的语言具有的任何本机映射、数组、字符串、数字、布尔值和空类型来形成您想要编码的数据结构,然后使用JSON编码函数将其编码为JSON。这样的函数可能内置在您使用的任何语言中,比如JavaScript的JSON。stringify、PHP的json\u encode、或Python的json。转储。如果您使用的语言没有内置这种功能,您可能会找到一个JSON解析和编码库来使用。如果您只是使用语言或库函数将事物转换为JSON或从JSON转换过来,您甚至不需要知道JSON的转义规则。这是被误导的提问者应该做的。

 类似资料:
  • 问题内容: 这是我的绳子 此处,消息包含单引号,与JSON中使用的引号相同。我要做的是从用户输入(例如消息)中填充一个字符串。因此,我需要避免那些破坏代码的特殊情况。但是,除了字符串替换之外,还有什么方法可以使它们转义,但仍允许HTML将其处理回正确的消息? 问题答案: 根据规范,JSON字符串必须用双引号引起来,因此您无需逸出。 如果必须在JSON字符串中使用特殊字符,则可以使用characte

  • 问题内容: 我们为科学应用程序提供了一个带有较长段落的表格,其中包含诸如符号beta(ß-arrestin)等字符。我们在Mule上运行一个JSON服务,该服务获取数据并持久保存到oracle数据库中。这个带有长段的特殊元素给我RAML / JSON错误。下面是错误 科学家写下的形式元素我们无法控制。因此,在M子方面,我们如何像Java具有URLEncoded一样自动地转义这些字符。非常感谢 问题

  • 我们有一个表单,其中有一个很长的段落,用于包含符号beta(ß-arrestin)等字符的Scientific应用程序。我们有一个在Mule上运行的JSON服务,它获取数据并保存到oracle数据库。这个带有长段落的特殊元素在RAML/JSON中给了我一个错误。下面是错误 科学家们所写的形式元素我们无法控制。因此,在骡子方面,我们如何像java那样自动摆脱这些角色呢。非常感谢

  • 正如我们所看到的,一个反斜杠 "\" 是用来表示匹配字符类的。所以它是一个特殊字符。 还存在其它的特殊字符,这些字符在正则表达式中有特殊的含义。它们可以被用来做更加强大的搜索。 这里是包含所有特殊字符的列表:[ \ ^ $ . | ? * + ( )。 现在并不需要尝试去记住它们 —— 当我们分别处理其中的每一个时,你自然而然就会记住它们。 转义 如果要把特殊字符作为常规字符来使用,只需要在它前面

  • 问题内容: 我想电视机1 ® 2的outputText: 什么不对?我大写。 问题答案: 您可以选择以下之一 在您最初的建议中,您放错了位置,应该在 您也可以完全删除(但您的(R)不会很小) 最后,您可以直接使用它而无需转义

  • 问题内容: 有没有一种方法可以将字符串转换为可以在Web文档中正确显示的字符串?例如,更改字符串 至 问题答案: 具有专门为此设计的功能: http://commons.apache.org/proper/commons- lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html