在 JavaScript 中解析 JSON 字串

在 JavaScript 中,JSON 物件用於解析 JSON 字串。此方法僅適用於現代瀏覽器(IE8 +,Firefox 3.5+等)。

解析有效的 JSON 字串時,結果是 JavaScript 物件,陣列或其他值。

JSON.parse('"bar of foo"')
// "bar of foo" (type string)
JSON.parse("true")
// true (type boolean)
JSON.parse("1")
// 1 (type number)
JSON.parse("[1,2,3]")
// [1, 2, 3] (type array)
JSON.parse('{"foo":"bar"}')
// {foo: "bar"} (type object)
JSON.parse("null")
// null (type object)

無效的字串將引發 JavaScript 錯誤

JSON.parse('{foo:"bar"}')
// Uncaught SyntaxError: Unexpected token f in JSON at position 1
JSON.parse("[1,2,3,]")
// Uncaught SyntaxError: Unexpected token ] in JSON at position 7
JSON.parse("undefined")
// Uncaught SyntaxError: Unexpected token u in JSON at position 0

JSON.parse 方法包括一個可選的 reviver 函式,它可以限制或修改解析結果

JSON.parse("[1,2,3,4,5,6]", function(key, value) {
  return value > 3 ? '' : value;
})
// [1, 2, 3, "", "", ""]

var x = {};
JSON.parse('{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6}', function(key, value) {
  if (value > 3) { x[key] = value; }
})
// x = {d: 4, e: 5, f: 6}

在最後一個示例中,JSON.parse 返回 undefined 值。為防止這種情況,請將 value 返回到 reviver 功能中。