Baseline Widely available *
JSON.parse()
éçã¡ã½ããã¯ãæååã JSON ã¨ãã¦è§£æããæååã«ãã£ã¦è¨è¿°ããã¦ãã JavaScript ã®å¤ããªãã¸ã§ã¯ããæ§ç¯ãã¾ãããªãã·ã§ã³ã®ãªãã¤ãã¼é¢æ°ã§ãçæããããªãã¸ã§ã¯ããè¿ãããåã«å¤æãå®è¡ãããã¨ãã§ãã¾ãã
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
æ§æ
JSON.parse(text)
JSON.parse(text, reviver)
弿°
text
JSON ã¨ãã¦è§£æããæååãJSON ã®æ§æã®èª¬æã¯ JSON
ãªãã¸ã§ã¯ããåç
§ãã¦ãã ããã
reviver
çç¥å¯
ãã颿°ã§ããå ´åãè§£æã«ããä½ãåºãããå ã®å¤ãããªãã¸ã§ã¯ããè¿ãåã«å¤æããæ¹æ³ãæç¤ºãã¾ãããã®é¢æ°ã¯ä»¥ä¸ã®å¼æ°ã§å¼ã³åºããã¾ãã
key
ãã®å¤ã«é¢é£ä»ãããããã¼ã
value
è§£éã§çæãããå¤ã
context
çç¥å¯
ç¾å¨ã®å¼ã«é¢é£ããç¶æ
ãä¿æããã³ã³ããã¹ããªãã¸ã§ã¯ãããªãã¤ãã¼é¢æ°ãå¼ã³åºããã³ã«æ°ãããªãã¸ã§ã¯ããçæããã¾ãããã®ãªãã¸ã§ã¯ãã¯ããªããã£ãå¤ã復活ãããå ´åã®ã¿æ¸¡ããã value
ããªãã¸ã§ã¯ããé
åã®å ´åã¯æ¸¡ããã¾ããã以ä¸ã®ããããã£ãããã¾ãã
source
ãã®å¤ã表ãå ã® JSON æååã
Object
, Array
, æåå, æ°å¤, è«çå¤, null
å¤ã®ããããã§ãæå®ããã JSON ã® text
ã«å¯¾å¿ããå¤ã§ãã
SyntaxError
è§£æããæååãæå¹ãª JSON ã§ãªãå ´åã«çºçãã¾ãã
JSON.parse()
ã¯ã JSON ã®ææ³ã«å¾ã£ã¦ JSON æååãæ§æè§£æãã JavaScript å¼ã§ãããã®ããã«æååãè©ä¾¡ãã¾ãã JSON ããã¹ãã®ä¸é¨ããåã JavaScript å¼ã¨ç°ãªãå¤ã表ãå¯ä¸ã®ä¾ã¯ã "__proto__"
ãã¼ãæ±ãå ´åã§ãããªãã¸ã§ã¯ããªãã©ã«æ§æ vs. JSON ãåç
§ãã¦ãã ããã
reviver
ãæå®ããã¨ãæ§æè§£æã§è¨ç®ãããå¤ã夿ãã¦ããè¿ãã¾ããå
·ä½çã«ã¯ãè¨ç®ãããå¤ã¨ãã®ãã¹ã¦ã®ããããã£ï¼æã奥ã«ãªã£ãããããã£ãããå
ã®å¤èªèº«ã¸ã¨æ·±ãåªå
ã§ï¼ãåå¥ã«ãªãã¤ãã¼ã«å®è¡ããã¾ãã
reviver
ã¯ãå¦ç対象ã®ããããã£ãå«ããªãã¸ã§ã¯ãã this
ã¨ãã¦ï¼ã¢ãã¼é¢æ°ã¨ã㦠reviver
ãå®ç¾©ããªãéããå¥åã® this
ãã¤ã³ãã£ã³ã°ã¯ããã¾ããï¼ã key
㨠value
ã® 2 ã¤ã®å¼æ°ãæå®ãã¦å¼ã³åºããã¾ãããããã¯ãããããæååã¨ãã¦ã®ããããã£åï¼é
åã®å ´åãåæ§ï¼ã¨ããããã£å¤ã表ãã¾ããããªããã£ãå¤ã®å ´åã¯ãããã« context
弿°ã渡ããããã®å¼æ°ã«ã¯ãã®å¤ã®ã½ã¼ã¹ããã¹ããæ ¼ç´ããã¾ãã reviver
颿°ã undefined
ãè¿ããå ´åï¼ã¾ãã¯è¿å¤ããªãå ´åãä¾ãã°ã颿°ã®çµããã§å®è¡ãæ¢ã¾ã£ã¦ãã¾ã£ãå ´åãªã©ï¼ãããããã£ã¯ãªãã¸ã§ã¯ãããåé¤ããã¾ãããã以å¤ã®å ´åãããããã£ã¯è¿å¤ãè¿ãããã«åå®ç¾©ããã¾ãããã reviver
ãããå¤ã ãã夿ããä»ã®å¤ã夿ããªãå ´åã¯ã夿ãããªãå¤ããã¹ã¦ãã®ã¾ã¾è¿ãããã«ãã¦ãã ããã
JSON.stringify()
ã® replacer
弿°ã¨åæ§ã«ãé
åããªãã¸ã§ã¯ãã®å ´åã reviver
ã¯ç©ºæååã key
ã¨ããã«ã¼ããªãã¸ã§ã¯ãã value
ã¨ãã¦ãã«ã¼ãå¤ã«å¯¾ãã¦æå¾ã«å¼ã³åºããã¾ããä»ã«ãæå¹ãª JSON å¤ãããå ´åã reviver
ã¯åæ§ã«åä½ãã空æååã key
ã¨ããå¤ãã®ãã®ã value
ã¨ãã¦ä¸åº¦ã ãå¼ã³åºããã¾ãã
reviver
ããå¥ã®å¤ãè¿ãã¨ãå
ã
è§£éã§ããå¤ã¯ãã®å¤ã«ãã£ã¦å®å
¨ã«ç½®ãæãã¾ããããã¯ã«ã¼ãå¤ã«ãé©ç¨ããã¾ããä¾ãã°ããã®ããã«ãªãã¾ãã
const transformedObj1 = JSON.parse('[1,5,{"s":1}]', (key, value) => {
return typeof value === "object" ? undefined : value;
});
console.log(transformedObj1); // undefined
ä¸è¬çã«ãããåé¿ããæ¹æ³ã¯ããã¾ãããJSON ãªãã¸ã§ã¯ãã«ã¯ç©ºæååã®ãã¼ãæ ¼ç´ãããã¨ãã§ããããããã¼ã空æååã®å ´åãç¹å¥ã«å¦çãããã¨ã¯ã§ãã¾ããããªãã¤ãã¼ãå®è£ ããéã«ã¯ãããããã®ãã¼ã«å¯¾ãã¦ã©ã®ãããªå¤æãå¿ è¦ããã¨ã¦ãæ£ç¢ºã«ç¥ãå¿ è¦ãããã¾ãã
reviver
ã¯å¤ãè§£éãããå¾ã«å®è¡ããããã¨ã«æ³¨æãã¦ãã ããããã®ãããä¾ãã° JSON ããã¹ãã§ã®æ°å¤ã¯æ¢ã« JavaScript ã®æ°å¤ã«å¤æããã¦ããããã®éç¨ã§ç²¾åº¦ã失ããã¨ãããã¾ãã精度ã失ããã¨ãªã大ããªæ°å¤ã夿ãã 1 ã¤ã®æ¹æ³ã¯ãæååã¨ãã¦ã·ãªã¢ã©ã¤ãºããé·æ´æ°åããä»ã«ãé©åãªä»»æã®ç²¾åº¦å½¢å¼ã«å¾©æ´»ããããã¨ã§ãã
ä¸è¨ã®éãã context.source
ããããã£ã使ç¨ãã¦ãå¤ã表ãå
ã® JSON ã½ã¼ã¹ããã¹ãã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
const bigJSON = '{"gross_gdp": 12345678901234567890}';
const bigObj = JSON.parse(bigJSON, (key, value, context) => {
if (key === "gross_gdp") {
// å¤ããã§ã«ç²¾åº¦ã失ã£ã¦ããããç¡è¦ã
return BigInt(context.source);
}
return value;
});
ä¾ JSON.parse() ã®ä½¿ç¨
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
reviver 弿°ã®ä½¿ç¨
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
// ""
JSON.stringify() ã®ãªãã¬ã¤ãµã¼ã¨å¯¾ã«ãªããªãã¤ãã¼ã®ä½¿ç¨
å¤ãæ£ãã丸ããï¼ã¤ã¾ããåãå
ã®ãªãã¸ã§ã¯ãã¸ã·ãªã¢ã©ã¤ãºè§£é¤ããï¼ããã«ã¯ãã·ãªã¢ã©ã¤ãºå¦çã§åæ
å ±ãä¿æããå¿
è¦ãããã¾ããä¾ãã°ããã®ããã« JSON.stringify()
ã® replacer
弿°ã使ç¨ãããã¨ãã§ãã¾ãã
// é常ã¯ã Map ã¯ããããã£ãæããªããªãã¸ã§ã¯ãã¨ãã¦ã·ãªã¢ã©ã¤ãºããã¾ãã
// ãªãã¬ã¤ãµã¼ã使ç¨ãã¦ãã·ãªã¢ã©ã¤ãºããé
ç®ãæå®ãããã¨ãã§ãã¾ãã
const map = new Map([
[1, "one"],
[2, "two"],
[3, "three"],
]);
const jsonText = JSON.stringify(map, (key, value) =>
value instanceof Map ? Array.from(value.entries()) : value,
);
console.log(jsonText);
// [[1,"one"],[2,"two"],[3,"three"]]
const map2 = JSON.parse(jsonText, (key, value) =>
Array.isArray(value) ? new Map(value) : value,
);
console.log(map2);
// Map { 1 => "one", 2 => "two", 3 => "three" }
JSON ã«ã¯åã¡ã¿ãã¼ã¿ãè¨ãããã®æ§æç©ºéããªãããããã¬ã¼ã³ãªãªãã¸ã§ã¯ãã§ã¯ãªãå¤ã復活ãããã«ã¯ã以ä¸ã®ãããããèæ ®ããå¿ è¦ãããã¾ãï¼
registry
ã¨å¼ã°ããããããã£ã¯ãã¹ã¦ Map
ãªãã¸ã§ã¯ããä¿æãã¦ãããªã©ï¼ãJSON.parse
ã JSON ã®ææ³ã«é©åããªãæååãåãåã£ãå ´åã SyntaxError
ãçºçãã¾ãã
JSON ã«ããã¦ãé åã¨ãªãã¸ã§ã¯ãã«ã¯æ«å°¾ã®ã«ã³ããç½®ããã¨ãã§ãã¾ããã
JSON.parse("[1, 2, 3, 4, ]");
// SyntaxError: Unexpected token ] in JSON at position 13
JSON.parse('{"foo": 1, }');
// SyntaxError: Unexpected token } in JSON at position 12
JSON ã®æååã¯ï¼åä¸å¼ç¨ç¬¦ã§ãªãï¼äºéå¼ç¨ç¬¦ã§åºåããªããã°ãªãã¾ããã
JSON.parse("{'foo': 1}");
// SyntaxError: Unexpected token ' in JSON at position 1
JSON.parse("'string'");
// SyntaxError: Unexpected token ' in JSON at position 0
JavaScript ã®æååãªãã©ã«å ã§ JSON ãæ¸ãå ´åã¯ã JavaScript ã®æååãªãã©ã«ãåºåãã®ã«åä¸å¼ç¨ç¬¦ã使ç¨ãããã JSON æååãåºåãäºéå¼ç¨ç¬¦ãã¨ã¹ã±ã¼ãããå¿ è¦ãããã¾ãã
JSON.parse('{"foo": 1}'); // OK
JSON.parse("{\"foo\": 1}"); // OK
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4