gpt4 book ai didi

javascript - JSON.parse() 可以指示有效的 JSON 格式吗?

转载 作者:行者123 更新时间:2023-11-28 15:55:56 25 4
gpt4 key购买 nike

很长一段时间我都使用 try - catch 来确保字符串是有效的 JSON。今天我发现 JSON.parse(1) (一个数字)返回 1JSON.parse("123") 返回 “123”,而我预计会出现语法错误,例如:预计 '{', '['.

偶数this answer似乎并没有解决我的问题。

所以,问题是:JSON.parse() 能否指示我传递的参数是否具有正确的 JSON 格式?

如果没有,还有什么选择?

最佳答案

ECMA-262中给出的语法15.12.1.2 - JSON 语法语法指出:

JSONText :
JSONValue

JSONValue :
JSONNullLiteral
JSONBooleanLiteral
JSONObject
JSONArray
JSONString
JSONNumber

因此,普通的原始类型值实际上是有效的 JSON。您认为只有数组和复杂对象才是有效 JSON 的预期是错误的。

JSON.parse(1) 将被强制转换为字符串,因此它相当于 JSON.parse("1")。并且 1 是一个有效的 JSONValue,因此也是一个有效的 JSONText,导致解析器再次返回 1。与 JSON.parse("123") 相同。

ECMA-262 语法似乎与 RFC 4627 中给出的语法不同。 ,但期望浏览器遵循 ECMA 而不是 RFC。

PS:您仍然可以使用以下内容进一步验证:

var v = JSON.parse(jsonString);
if (v !== new Object(v)) { // Also: works when v = null
throw new Error("Not an Object/Array");
}

关于javascript - JSON.parse() 可以指示有效的 JSON 格式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784435/

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