在 JavaScript 中解析 JSON 数组
How to parse a JSON Array in JavaScript
使用该JSON.parse()
方法来传递 JSON 数组,例如JSON.parse(arr)
. 该方法解析 JSON 字符串并返回其 JavaScript 值或等效对象。如果提供的参数不是有效的 JSON,该JSON.parse
方法将引发SyntaxError
异常。
索引.js
const jsonArr = '[{"id": 1, "name": "Tom"}, {"id": 2, "name": "Alice"}]'; const parsed = JSON.parse(jsonArr); // 👇️ [{id: 1, name: 'Tom'}, {id: 2, name: 'Alice'}] console.log(parsed);
我们使用
JSON.parse
方法将 JSON 数组解析为其 JavaScript 等效项。
我们传递给该方法的唯一参数是应该解析的 JSON 字符串。
如果您向该方法提供无效的 JSON,SyntaxError
则会抛出异常。
索引.js
const invalidJson = '[{id: 1}]'; // ⛔️ Unexpected token i in JSON at position 2 console.log(JSON.parse(invalidJson));
示例中的 JSON 数组在属性周围没有双引号,这使其无效。
id
该JSON.parse
方法尝试解析 JSON,但无法解析并抛出异常。
如果您需要处理这种情况,您可以在
try/catch
块内解析 JSON 数组以确保您的程序不会崩溃。
索引.js
const jsonArr = '[{"id": 1, "name": "Tom"}, {"id": 2, "name": "Alice"}]'; let parsed; try { parsed = JSON.parse(jsonArr); console.log('✅ JSON array parsed successfully'); } catch (err) { console.log('⛔️ invalid JSON provided'); // report error } // 👇️ [{id: 1, name: 'Tom'}, {id: 2, name: 'Alice'}] console.log(parsed);
如果提供的 JSON 无效,我们的catch
块将运行,我们可以在其中处理错误。
如果 JSON 有效,它将被解析并分配给parsed
变量。
如果您的 JSON 无效,请在谷歌上搜索 JSON 验证器并将其粘贴到文本框中。
查看您的 JSON 包含哪些错误并更正它们 – 在服务器上,或使用
String.replace
或
String.replaceAll
方法在客户端更正它们。
例如,以下代码将所有单引号替换为双引号以生成有效的 JSON 数组。
索引.js
const invalidJson = "['apple', 'banana']"; const validJson = invalidJson.replaceAll(`'`, `"`); // 👇️ {'apple', 'banana'} const parsed = JSON.parse(validJson); console.log(parsed);
我们使用该
replaceAll()
方法将所有出现的单引号替换为双引号以使 JSON 数组有效。该replaceAll
方法采用的第一个参数是我们要在字符串中匹配的子字符串,第二个参数是每次匹配的替换。