手动创建JSON数据时,应如何转义字符串字段?我应该用什么样的Apache Commons
Lang中的StringEscapeUtilities.escapeHtml
,StringEscapeUtilities.escapeXml
或者我应该使用java.net.URLEncoder
?
问题是,当我使用时SEU.escapeHtml
,它不会转义引号,并且当我将整个字符串包装在一对'
s中时,将生成格式错误的JSON。
理想情况下, 找到一种使用您的语言的JSON库 ,您可以向该 库 提供一些适当的数据结构, 并使它担心如何转义
。它会让您保持头脑清醒。如果出于某种原因您没有使用您的语言的库,或者不想使用一个库(我不建议这样做¹),或者您正在编写JSON库,请继续阅读。
根据RFC对其进行转义。JSON是相当宽松:你唯一的字符 必须 逃脱是\
,"
和控制代码(东西不是U + 0020以下)。
这种转义结构特定于JSON。您将需要JSON特定功能。所有逃逸的可以写成\uXXXX
其中XXXX
是该字符的UTF-16代码unit¹。有一些快捷方式也可以使用,例如\\
。(它们导致更小,更清晰的输出。)
有关详细信息,请参见RFC。
¹JSON的转义是基于JS构建的,因此它使用\uXXXX
,其中XXXX
为UTF-16代码单元。对于BMP之外的代码点,这意味着对代理对进行编码,这可能会有些毛茸茸。(或者,您可以直接输出字符,因为JSON的编码是Unicode文本,并且允许这些特殊字符。)
问题内容: 手动创建数据时,应如何转义字符串字段?我应该用什么样的中的或者我应该使用 问题是,当我使用时,它不会转义引号,并且当我将整个字符串包装在一对s中时,将生成格式错误的JSON。 问题答案: 理想情况下,找到一种使用你的语言的JSON库,你可以向该库提供一些适当的数据结构,并使它担心如何转义。它会让你保持头脑清醒。如果出于某种原因你没有使用你的语言的库,或者你不想使用一个库(我不建议这样做
问题内容: 我们为科学应用程序提供了一个带有较长段落的表格,其中包含诸如符号beta(ß-arrestin)等字符。我们在Mule上运行一个JSON服务,该服务获取数据并持久保存到oracle数据库中。这个带有长段的特殊元素给我RAML / JSON错误。下面是错误 科学家写下的形式元素我们无法控制。因此,在M子方面,我们如何像Java具有URLEncoded一样自动地转义这些字符。非常感谢 问题
我们有一个表单,其中有一个很长的段落,用于包含符号beta(ß-arrestin)等字符的Scientific应用程序。我们有一个在Mule上运行的JSON服务,它获取数据并保存到oracle数据库。这个带有长段落的特殊元素在RAML/JSON中给了我一个错误。下面是错误 科学家们所写的形式元素我们无法控制。因此,在骡子方面,我们如何像java那样自动摆脱这些角色呢。非常感谢
问题内容: 我从公共API接收到一个JSON对象,该对象本身具有一个转义的JSON字符串。 我如何将此属性转换为实际的JSON对象(未转义),以便使用NewtonSoft Json.NET反序列化整个响应? 问题答案: 这是我根据 Sam 的答案使用的可行解决方案:
问题内容: 我在Go中使用Sockjs,但是当javascript客户端将json发送到服务器时,它会对其进行转义,并将其作为[]字节发送。我试图弄清楚如何解析json,以便我可以读取数据。但是我得到这个错误。 json:无法将字符串解组为main.Msg类型的Go值 我怎样才能解决这个问题?html.UnescapeString()无效:/ 问题答案: 您可能要先在JSON字符串上使用:) 这是
问题内容: 这是我的绳子 此处,消息包含单引号,与JSON中使用的引号相同。我要做的是从用户输入(例如消息)中填充一个字符串。因此,我需要避免那些破坏代码的特殊情况。但是,除了字符串替换之外,还有什么方法可以使它们转义,但仍允许HTML将其处理回正确的消息? 问题答案: 根据规范,JSON字符串必须用双引号引起来,因此您无需逸出。 如果必须在JSON字符串中使用特殊字符,则可以使用characte