This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

JSON.parse()

Baseline Widely available *

This feature is well established and works across many devices and browser versions. Itโ€™s been available across browsers since โจ2015๋…„ 7์›”โฉ.

* Some parts of this feature may have varying levels of support.

JSON.parse() ๋ฉ”์„œ๋“œ๋Š” JSON ๋ฌธ์ž์—ด์˜ ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์—์„œ JavaScript ๊ฐ’์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ์ ์œผ๋กœ, reviver ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ, ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๋„ํ•ด ๋ณด๊ธฐ

const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);

console.log(obj.count);
// Expected output: 42

console.log(obj.result);
// Expected output: true

๊ตฌ๋ฌธ

js
    JSON.parse(text[, reviver])

๋งค๊ฐœ๋ณ€์ˆ˜

text

JSON์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋ฌธ์ž์—ด. JSON ๊ตฌ๋ฌธ์€ JSON ๊ฐ์ฒด์˜ ์„ค๋ช…์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

reviver Optional

ํ•จ์ˆ˜๋ผ๋ฉด, ๋ณ€ํ™˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ์ด ์ธ์ˆ˜์— ์ „๋‹ฌํ•ด ๋ณ€ํ˜•ํ•จ.

๋ฐ˜ํ™˜ ๊ฐ’

์ฃผ์–ด์ง„ JSON ๋ฌธ์ž์—ด์— ๋Œ€์‘ํ•˜๋Š” Object.

์˜ˆ์™ธ

๋ณ€ํ™˜ํ•  ๋ฌธ์ž์—ด์ด ์œ ํšจํ•œ JSON์ด ์•„๋‹ ๊ฒฝ์šฐ SyntaxError.

์˜ˆ์ œ

JSON.parse() ์‚ฌ์šฉํ•˜๊ธฐ

js
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null

reviver ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

reviver๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๋ถ„์„ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š”, ๋ถ„์„ํ•œ ๊ฐ’๊ณผ ๊ทธ ๋ชจ๋“  ์†์„ฑ(๊ฐ€์žฅ ๊นŠ๊ฒŒ ์ค‘์ฒฉ๋œ ์†์„ฑ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ์ œ์ผ ๋ฐ”๊นฅ์˜ ์›๋ž˜ ๊ฐ’๊นŒ์ง€)์„ ๊ฐ๊ฐ reviver์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. reviver์˜ this ๋ฌธ๋งฅ์€ ๋ถ„์„ํ•œ ๊ฐ’์œผ๋กœ ์„ค์ •๋˜๊ณ , ์†์„ฑ ๋ช…(๋ฌธ์ž์—ด)๊ณผ ๊ฐ’์„ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›์Šต๋‹ˆ๋‹ค. reviver๊ฐ€ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์˜ˆ์ปจ๋Œ€ ํ•จ์ˆ˜๊ฐ€ ์ค‘๊ฐ„์— ์‹คํŒจํ•œ๋‹ค๋ฉด ๊ทธ ์†์„ฑ์€ ์ตœ์ข… ๊ฒฐ๊ณผ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ์†์„ฑ์˜ ๊ฐ’์„ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ reviver๊ฐ€ ์ผ๋ถ€ ๊ฐ’๋งŒ ๋ณ€ํ™˜ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฑธ ์žŠ์ง€ ๋งˆ์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ณ€ํ™˜ํ•œ ๊ฐ’ ์™ธ์—๋Š” ๊ฒฐ๊ณผ์—์„œ ๋ชจ๋‘ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

js
JSON.parse(
  '{"p": 5}',
  (key, value) =>
    typeof value === "number"
      ? value * 2 // ์ˆซ์ž๋ผ๋ฉด 2๋ฐฐ
      : value, // ๋‚˜๋จธ์ง„ ๊ทธ๋Œ€๋กœ
);

// { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
  console.log(key); // ํ˜„์žฌ ์†์„ฑ๋ช… ์ถœ๋ ฅ, ๋งˆ์ง€๋ง‰์€ ๋นˆ ๋ฌธ์ž์—ด("")
  return value; // ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""

ํ›„ํ–‰ ์‰ผํ‘œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€

js
// ๋‘˜ ๋‹ค SyntaxError
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse('{"foo" : 1, }');

๋ช…์„ธ์„œ

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-json.parse

๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ

๊ฐ™์ด ๋ณด๊ธฐ