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

最低有效JSON是多少?

娄鹤轩
2023-03-14
问题内容

我已经仔细阅读了JSON描述http://json.org/,但是我不确定我是否知道简单问题的答案。最小可能的有效JSON是什么字符串?

  • "string" 字符串是有效的JSON吗?
  • 42 简单数字是有效的JSON吗?
  • true 布尔值是有效的JSON吗?
  • {} 空对象是有效的JSON吗?
  • [] 空数组是有效的JSON吗?

问题答案:

在撰写本文时,JSON仅在RFC4627中进行了描述。它(在“2”开头)将JSON文本描述为序列化的对象或数组。

这意味着在符合该标准的解析器和字符串化器中, 只有 {}并且[]是有效的完整JSON字符串。

但是,ECMA-404的引入改变了这一点,更新的建议。

然而,为了进一步混淆该问题,Web浏览器中可用的JSON对象(例如JSON.parse()JSON.stringify())在ES5中进行了标准化,并且明确定义了可接受的JSON文本,如下所示:

本规范中使用的JSON交换格式与RFC 4627完全相同,但有两个例外:

  • ECMAScript JSON语法的顶级JSONText生成可以由任何JSONValue组成,而不是被限制为RFC
    4627指定的JSONObject或JSONArray。

  • 抢断

这意味着即使JSON对象在技术上遵循RFC 4627,JSON对象也可以接受所有JSON值(包括字符串,空值和数字)。

请注意,因此,您可以通过JSON.stringify(5),在符合标准的浏览器中对数字进行字符串化,该数字将被另一个遵循RFC4627的解析器拒绝,但该解析器没有上面列出的特定异常。例如,Ruby似乎就是这样一个例子,它 接受对象和数组作为root,即“它还将对标量类型和NULL进行编码和解码”。



 类似资料:
  • 有一个大小为N x M的网格,有些单元是岛,用“0”表示,其他的是水。每个水电池上都有一个数字,表示在该电池上做桥的成本。你必须找到所有岛屿都能连接起来的最小成本。如果一个单元格共享一条边或一个顶点,则该单元格与另一个单元格相连。 用什么算法可以解决这个问题?如果N,M的值很小,比如说NxM<=100,那么用什么作为蛮力方法呢? 示例:在给定的图像中,绿色单元格表示岛屿,蓝色单元格表示水,浅蓝色单

  • 我正在用木偶制作器生成一个PDF文件。它自动生成一个PDF-1.4文件。然后,我使用dss用PAdES签名对其进行数字签名。结果文件可以在PDF查看器中打开,PDFStudio似乎可以正确解析文档签名。 然而,这是否有效?维基百科声明PDF/A-2(基于1.7)增加了对PAdES的支持。我是否需要生成至少PDF-1.7(或PDF/A-2)才能拥有具有有效签名的有效PDF文件? 注意:我在技术术语和

  • 检查提供的参数是否是有效的JSON。 使用 JSON.parse() 和 try... catch 块来检查提供的参数是否是有效的JSON。 const isValidJSON = obj => { try { JSON.parse(obj); return true; } catch (e) { return false; } }; isValidJSON(

  • 我遇到了下面的问题 一排有N栋房子。每栋房子都可以漆成红色、绿色或蓝色。每种颜色给每间房子上色的成本是不同的。找到每栋房子的颜色,这样相邻的两栋房子就不会有相同的颜色,所有房子的着色总成本最低。 这是完整的问题 在我看来,这个问题有点令人困惑,因为目标是将成本降到最低,并确保相邻的房子没有相同的颜色。在这种情况下,我不应该从三种颜色中选择成本最低的两种颜色吗。 这里是颜色的成本 红色100美元 我

  • 问题内容: 以下代码使用和将转换为JSON字符串。 有没有更快的方法? 有没有一种方法可以使用更少的内存? 问题答案: 由于JIT编译器只是分支和基本测试,因此它可能会使其变得非常快。您可以通过对回调进行HashMap查找来使其更加优雅,但我怀疑这样做会更快。至于记忆,这是非常苗条的。 我以某种方式怀疑此代码实际上是内存或性能的关键瓶颈。您有真正的理由尝试对其进行优化吗?

  • 问题内容: 我希望编写一个提供JSON对象列表的Web服务。返回以下内容的JSON是否有效: 还是将其放在单个对象中以返回的“正确”方法: 问题答案: 两种形式均有效。但是,对于API,我建议使用第二种形式。原因是它为您提供扩展API的途径。 例如,如果您有一个返回用户对象数组的API ,后来又决定要包含一些有关返回用户的汇总统计信息,那么没有不破坏现有客户端(或包括每个用户对象中有很多冗余数据)