当前位置: 首页 > 面试题库 >

JSON和转义字符

逑何平
2023-03-14
问题内容

我有一个字符串,该字符串在Javascript中序列化为JSON,然后反序列化为Java。

看起来如果字符串包含度数符号,那么我遇到了问题。

我可以使用一些帮助找出应该归咎于谁:

  • 是Spidermonkey 1.8的实现吗?(这具有内置的JSON实现)
  • 是Google gson吗?
  • 是我做不正确的事吗?

这是JSDB中发生的事情:

js>s='15\u00f8C'
15°C
js>JSON.stringify(s)
"15°C"

我本来希望"15\u00f8C'这使我相信Spidermonkey的JSON实现没有做正确的事…除了JSON主页的语法说明(是否是规范?)说,可以使用char

任意Unicode字符,“-或\或控制字符除外”

所以也许它按原样传递字符串而不将其编码为\ u00f8 …在这种情况下,我认为问题出在gson库。

有人可以帮忙吗?

我想我的解决方法是使用其他JSON库,或者在调用后手动自己对字符串进行转义JSON.stringify()-但是,如果这是一个错误,那么我想提交一个错误报告。


问题答案:

在任何一种实现中这都不是错误。不需要转义U + 00B0。引用RFC:

2.5。 弦乐

字符串的表示类似于C系列编程语言中使用的约定。字符串以引号开头和结尾。除必须转义的字符外,所有Unicode字符都可以放在引号内:引号,反斜线和控制字符(U
+ 0000至U + 001F)。

任何字符 可以转义。

转义所有内容会扩大数据的大小(在所有Unicode转换格式中,所有代码点都可以用四个或更少的字节表示;而对它们进行编码都会使它们变成六个或十二个字节)。

您更有可能在代码中的某个地方出现文本转码错误,并且转义ASCII子集中的所有内容都会掩盖此问题。JSON规范要求所有数据都使用Unicode编码。



 类似资料:
  • 问题内容: 我有以下要发送到NodeJS服务器的JSON字符串: 当字符串包含字符和 在NodeJS服务器上,我正在像这样解析JSON: 有什么想法我可以设法毫无问题地发送所有字符吗? 问题答案: 我会使用一个库来为您创建JSON 。一些选项是: GSON 克罗福德的解放 这将使转义变得更加容易。一个示例(使用)为:

  • 在JSON中,Unicode字符可以使用表示法进行转义。我假设显然是指十六进制的Unicode代码点。 但由于只有4位数字,这是否意味着无法转义

  • 问题内容: 我从公共API接收到一个JSON对象,该对象本身具有一个转义的JSON字符串。 我如何将此属性转换为实际的JSON对象(未转义),以便使用NewtonSoft Json.NET反序列化整个响应? 问题答案: 这是我根据 Sam 的答案使用的可行解决方案:

  • 问题内容: 我正在使用git,然后将提交消息和其他位作为JSON有效负载发布到服务器。 目前我有: 将MSG设置为: 然后 我的真实JSON还有另外两个字段。 这很好用,但是当然当我有一个提交消息(例如上面带有撇号的提交消息)时,JSON是无效的。 如何转义bash中所需的字符?我不熟悉该语言,所以不确定从哪里开始。更换有会做的最小,我怀疑这份工作。 问题答案: 好,知道该怎么办。Bash像预期的

  • 问题内容: 手动创建JSON数据时,应如何转义字符串字段?我应该用什么样的Apache Commons Lang中的,或者我应该使用? 问题是,当我使用时,它不会转义引号,并且当我将整个字符串包装在一对s中时,将生成格式错误的JSON。 问题答案: 理想情况下, 找到一种使用您的语言的JSON库 ,您可以向该 库 提供一些适当的数据结构, 并使它担心如何转义 。它会让您保持头脑清醒。如果出于某种原

  • 本文向大家介绍javascript json字符串到json对象转义问题,包括了javascript json字符串到json对象转义问题的使用技巧和注意事项,需要的朋友参考一下 在使用JavaScriptSerializer.Serialize 方法转json对象时,遇到一个问题,后台方法生成的json字符串中有没有转义的特殊字符代码; 而这些特殊的代码在使用javascript的转json对象