gpt4 book ai didi

json - 对于 JSON 解析器来说,逗号和冒号都是多余的吗?

转载 作者:行者123 更新时间:2023-12-02 16:21:49 29 4
gpt4 key购买 nike

下面我提到的 JSON 是有效的 JSON。

我写完了一个 JSON 解析器,它只允许 String 和 Object 两种基本数据类型。让我展示一下解析器在出现任何歧义时会做什么。

parse("{ "Mon": "weekday", "Tue": "weekday", "Sun": "weekend" }").get("Sun");//return value: "weekend"
parse("{ "weekday" : { "Mon": "1", "Tue": "2"} }").get("weekday").get("Mon");//return value: "1"

函数parse返回一个字典,我们可以从中得到我们想要的东西。

我发现我没有使用任何逗号或冒号来解析 JSON,那么我猜这些符号对于全数据类型支持的 JSON 解析器来说可能也是多余的,是真的吗?如果是的话,它们是为了可读性,对吗?

PS:如果 JSON 无效怎么办?同样的答案?

最佳答案

根据RFC 8259 (The JavaScript Object Notation (JSON) Data Interchange Format)冒号逗号分别列为名称分隔符值分隔符

参见2. JSON Grammar部分:

These are the six structural characters:

begin-array = ws %x5B ws ; [ left square bracket

begin-object = ws %x7B ws ; { left curly bracket

end-array = ws %x5D ws ; ] right square bracket

end-object = ws %x7D ws ; } right curly bracket

name-separator = ws %x3A ws ; : colon

value-separator = ws %x2C ws ; , comma

因此,它们都是具有特定用途的有效 JSON 分隔符。

<小时/>

请参阅部分9. Parsers :

   A JSON parser transforms a JSON text into another representation.  A
JSON parser MUST accept all texts that conform to the JSON grammar.
A JSON parser MAY accept non-JSON forms or extensions.

An implementation may set limits on the size of texts that it
accepts. An implementation may set limits on the maximum depth of
nesting. An implementation may set limits on the range and precision
of numbers. An implementation may set limits on the length and
character contents of strings.

从解析器部分,我们可以发现没有提及跳过(忽略)冒号和/或逗号,因为这样的话相关解析器将不符合 JSON 语法。

<小时/>

综上所述,可以肯定地说,任何此类忽略 JSON 语法的决定肯定是完全主观的,这意味着此类解析器不符合语法。

所以,这回答了冒号或逗号不是多余的问题,它们是 JSON 语法的重要组成部分。

希望有帮助!

关于json - 对于 JSON 解析器来说,逗号和冒号都是多余的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997300/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com