Baseline Widely available
JSON.stringify()
ã¡ã½ããã¯ããã JavaScript ã®ãªãã¸ã§ã¯ããå¤ã JSON æååã«å¤æãã¾ããç½®ãæã颿°ãæå®ãã¦å¤ãç½®ãæããããç½®ãæãé
åãæå®ãã¦æå®ãããããããã£ã®ã¿ãå«ãããã«ããããããã¨ãã§ãã¾ãã
console.log(JSON.stringify({ x: 5, y: 6 }));
// Expected output: '{"x":5,"y":6}'
console.log(
JSON.stringify([new Number(3), new String("false"), new Boolean(false)]),
);
// Expected output: '[3,"false",false]'
console.log(JSON.stringify({ x: [10, undefined, function () {}, Symbol("")] }));
// Expected output: '{"x":[10,null,null,null]}'
console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// Expected output: '"2006-01-02T15:04:05.000Z"'
æ§æ
JSON.stringify(value)
JSON.stringify(value, replacer)
JSON.stringify(value, replacer, space)
弿°
value
JSON æååã«å¤æããå¤ã§ãã
replacer
çç¥å¯
æåååã®æé ã®æåã夿´ãã颿°ãã¾ã㯠value
ã®ããããã£ã®ãã¡åºåã«å«ãããã®ãæå®ããæååã¨æ°å¤ã®é
åã§ãããã®å¤ãé
åã§ããå ´åã¯ãæååã§ãæ°å¤ã§ããªãè¦ç´ ï¼Symbol
ãªã©ï¼ã¯å®å
¨ã«ç¡è¦ããã¾ããæååãæ°å¤ã¨ãã¦ã¯ãããªããã£ãã§ãã©ããã¼ãªãã¸ã§ã¯ãã§ã使ç¨å¯è½ã§ãããã®å¤ã颿°ã§ãé
åã§ããªãå ´åï¼null
ã®å ´åããæå®ããªãå ´åãªã©ï¼ã¯ãçµæã® JSON æååã«ãªãã¸ã§ã¯ãã®æååããã¼ã¨ãããã¹ã¦ã®ããããã£ãå«ã¾ãã¾ãã
space
çç¥å¯
æååã¾ãã¯æ°å¤ã§ãåºåãã JSON æååã«å¯èªæ§ãç®çã«ç©ºç½ (ã¤ã³ãã³ããæ¹è¡ãªã©) ãæ¿å ¥ããããã«ä½¿ç¨ãã¾ãã
ãããæ°å¤ã®ã¨ãã¯ãã¤ã³ãã³ãã¨ãã¦ä½¿ãç©ºç½æåã®æ°ã示ãã¾ãããã®æ°ã®ä¸é㯠10 ã§ãï¼ãããã大ããæ°å¤ã¯ãåã« 10
ã¨ãªãã¾ãï¼ã 1 ããå°ããå¤ã¯ç©ºç½ã使ããªããã¨ã示ãã¾ãã
ãããæååã®ã¨ãã¯ããã®æååï¼10 æåããé·ãå ´åã¯ãã®æåã® 10 æåï¼ããã¹ããããããããã®ãªãã¸ã§ã¯ããé åã®åã«æ¿å ¥ããã¾ãã
ãããæååã§ãæ°å¤ã§ããªãå ´åï¼æååãæ°å¤ã¨ãã¦ã¯ãããªããã£ãã§ãã©ããã¼ãªãã¸ã§ã¯ãã§ã使ç¨å¯è½ï¼ããã¨ãã° null
ãæå®ããªãå ´åã¯ã空ç½ã¯ä½¿ç¨ããã¾ããã
ä¸ããããå¤ã表ç¾ãã JSON æååã
ä¾å¤TypeError
以ä¸ã®ããããã®å ´åã«çºçãã¾ãã
value
ã循ç°åç
§ãå«ãå ´åãé·æ´æ°
å¤ã«ééããå ´åJSON.stringify()
ã¯å¤ãããã表ã JSON 表è¨ã«å¤æãã¾ããå¤ã¯ä»¥ä¸ã®ããã«å¤æããã¾ãã
Boolean
ã Number
ã String
ãããã³ (Object()
ã«ããå¾ããã) BigInt
ã®åãªãã¸ã§ã¯ãã¯ãæåååã®éã«æ
£ç¿çãªå¤æã»ãã³ãã£ã¯ã¹ã«å¾ãã対å¿ããããªããã£ãå¤ã«å¤æããã¾ãã(Object()
ã«ããå¾ããã) Symbol
ã®ãªãã¸ã§ã¯ãã¯ããã¬ã¼ã³ãªãã¸ã§ã¯ãã¨ãã¦æ±ããã¾ãã
BigInt
ã®å¤ãæåååãããã¨ããã¨ãä¾å¤ãçºçãã¾ããããããBigInt
ã (ã¢ã³ãã¼ããã BigInt.prototype.toJSON = ...
ã«ãã) toJSON()
ã¡ã½ãããæã£ã¦ããå ´åããã®ã¡ã½ããã«ããæåååã§ãã¾ãããã®å¶ç´ã«ãããé©åãªæåååã®æ¹æ³ï¼ããã¦ãã»ã¨ãã©ã®å ´åã対å¿ããéå¤æã®æ¹æ³ï¼ã常ã«ã¦ã¼ã¶ã¼ã«ãã£ã¦æç¤ºãããããã«ãã¾ãã
undefined
ã颿° (Function
)ãã·ã³ãã« (Symbol
) ã¯æå¹ãª JSON å¤ã§ã¯ããã¾ããã夿ä¸ã«ãã®ãããªå¤ã«ééããå ´åã¯ã(ãªãã¸ã§ã¯ãã®ä¸ã§çºè¦ãããå ´åã¯) çç¥ãããããï¼é
åã®ä¸ã§è¦ã¤ãã£ãå ´åã¯ï¼ null
ã«å¤æãããããã¾ãã JSON.stringify()
㯠JSON.stringify(() => {})
ã JSON.stringify(undefined)
ã®ããã«ãç´ç²ããªå¤ã渡ããå ´åã« undefined
ãè¿ããã¨ãããã¾ãã
Infinity
ããã³ NaN
ã®æ°å¤ã¯ã null
ã®å¤ã¨åæ§ã«ããã¹ã¦ null
ã¨è¦ãªããã¾ãã(ãã ããåè¿°ã®å¤ã¨éã£ã¦ãçç¥ããããã¨ã¯ããã¾ãã)
é
åã¯é
åã¨ãã¦ï¼è§æ¬å¼§ã§å²ã¾ãï¼æåååããã¾ãã 0 ãã length - 1
ã¾ã§ã®æ·»å (両端ãå«ã¿ã¾ã) ãæåååãããä»ã®ããããã£ã¯ç¡è¦ããã¾ãã
JSON.rawJSON()
ã§ä½æããç¹æ®ãªçã® JSON ãªãã¸ã§ã¯ãã¯ãï¼ãã® rawJSON
ããããã£ã«ã¢ã¯ã»ã¹ãããã¨ã§ï¼ãããå«ãçã® JSON ããã¹ãã¨ãã¦ã·ãªã¢ã©ã¤ãºããã¾ãã
ãã®ä»ã®ãªãã¸ã§ã¯ãã«ã¤ãã¦ã¯ã以ä¸ã®éãã§ãã
ã·ã³ãã« (Symbol
) ããã¼ã¨ãªã£ã¦ããããããã£ã¯ãã¹ã¦ã弿° replacer
ã使ç¨ããå ´åã§ãå®å
¨ã«ç¡è¦ããã¾ãã
å¤ã toJSON()
ã¡ã½ãããæã£ã¦ããå ´åã¯ãããããã¼ã¿ãã©ãæåååããããæ±ºå®ãã¾ãããªãã¸ã§ã¯ããæåååãããããã«ãtoJSON()
ã¡ã½ãããè¿ãå¤ãæåååããã¾ããJSON.stringify()
㯠toJSON
ã 1 åã®å¼æ° key
ãæå®ãã¦å¼ã³åºãã¾ãããã®å¼æ°ã¯ãreplacer
颿°ã¨åã以ä¸ã®ä»æ§ã§ãã
JSON.stringify()
ããã®ãªãã¸ã§ã¯ãã«ã¤ãã¦ç´æ¥å¼ã°ããå ´åã¯ã空æååDate
ã®ã¤ã³ã¹ã¿ã³ã¹ã¯æååãè¿ã toJSON()
ãå®è£
ãã¦ãã¾ã (date.toISOString()
ã¨åãã§ã)ããã®ãããããã¯æååã«å¤æããã¾ãã
åæå¯è½ãªããããã£ã®ã¿ãæåååããã¾ãããã®ãããMap
ãSet
ãWeakMap
ãWeakSet
ãªã©ã¯ "{}"
ã«å¤æããã¾ãã弿° replacer
ãç¨ãããã¨ã§ãããããããå®ç¨çãªãã®ã«å¤æã§ãã¾ãã
ããããã£ã¯ãObject.keys()
ã¨åãã¢ã«ã´ãªãºã ã§èµ°æ»ããã¾ãããã®ã¢ã«ã´ãªãºã ã¯ãå®å
¨ã«å®ç¾©ãããé çªãç¨ããå®è£
éã§ä¸è²«æ§ãããã¾ããä¾ãã°ãJSON.stringify()
ãåããªãã¸ã§ã¯ãã«å¯¾ãã¦ç¨ããã¨ã常ã«åãæååãçæãã¾ããã¾ããJSON.parse(JSON.stringify(obj))
㯠(ãªãã¸ã§ã¯ããå®å
¨ã« JSON ã«å¤æå¯è½ã§ããã¨ä»®å®ããã¨) ãã¨ã®ãªãã¸ã§ã¯ãã¨åããã¼ã®é çªãæã¤ãªãã¸ã§ã¯ããçæãã¾ãã
replacer
弿°ã¯é¢æ°ã¾ãã¯é
åã§ãã
é åã®å ´åããã®è¦ç´ ã¯çµæã® JSON æååã«å«ãããªãã¸ã§ã¯ãã®ããããã£ã®ååã表ãã¾ããæååã¨æ°å¤ã§ããå¤ã®ã¿ãå¦çã«ç¨ããããã·ã³ãã«ã®ãã¼ã¯ç¡è¦ããã¾ãã
颿°ã®å ´åã key
ã¨æåååããã value
ã® 2 ã¤ã®å¼æ°ãåãã¾ãããã¼ããã¤ãªãã¸ã§ã¯ãã replacer
ã®ã³ã³ããã¹ãã§ this
ã¨ãã¦æä¾ããã¾ãã
replacer
颿°ã¯ãã¾ãæåååããããªãã¸ã§ã¯ãã«ã¤ãã¦å¼ã³åºããããã®ã¨ãã® key
ã¯ç©ºæåå (""
) ã§ãããã®å¾ãæåååããããªãã¸ã§ã¯ããé
åã®ããããã®ããããã£ã«ã¤ãã¦å¼ã³åºããã¾ããé
åã®æ·»åã¯ãæååã¨ã㦠key
ã«å
¥ãã¾ããå¦çä¸ã®ããããã£ã®å¤ã¯ãæåååã«ãã㦠replacer
ã®è¿å¤ã«ç½®ãæãããã¾ããããªãã¡:
null
ãè¿ãã¨ããã®å¤ãç´æ¥æåååãããã®ãããããã£ã®å¤ã¨ãã¦ä½¿ç¨ããã¾ããï¼é·æ´æ°ãè¿ãã¨ãä¾å¤ãçºçãã¾ããï¼Function
)ãã·ã³ãã« (Symbol
)ãundefined
ãè¿ãã¨ãåºåã«ã¯ãã®ããããã£ãå«ã¾ããªããªãã¾ããreplacer
颿°ãå¼ã³åºãã¦å帰çã«æåååãã¾ããã¡ã¢: replacer
颿°ãç¨ãã¦çæãã JSON ãè§£éããéã¯ãé夿ã®ããã«å¼æ° reviver
ãç¨ããããªãå¯è½æ§ãé«ãã§ãããã
é常ãé
åã®è¦ç´ ã®æ·»åã¯ããã¾ããï¼è¦ç´ ã颿°ãªã©ã®ç¡å¹ãªå¤ã§ããå ´åããçç¥ãããã®ã§ã¯ãªã null
ã«ãªãã¾ãï¼ãreplacer
颿°ãç¨ããã¨ãå¥ã®é
åãè¿ããã¨ã§ãé
åã®è¦ç´ ã®é çªãå¶å¾¡ã§ãã¾ãã
space
弿°ã§æçµçãªæååã§ã®ç©ºç½ã®æ°ã調æ´ã§ãã¾ãã
ã¤ã³ãã³ãã®é層ã 10 ããé·ããªããã¨ã¯ããã¾ãããspace
ã®å¤ãæ°å¤ã®å ´åã¯æå¤§ 10 ã¨ãªããæååã®å ´å㯠10 æåã«åãè©°ãããã¾ãã
JSON.stringify({}); // '{}'
JSON.stringify(true); // 'true'
JSON.stringify("foo"); // '"foo"'
JSON.stringify([1, "false", false]); // '[1,"false",false]'
JSON.stringify([NaN, null, Infinity]); // '[null,null,null]'
JSON.stringify({ x: 5 }); // '{"x":5}'
JSON.stringify(new Date(1906, 0, 2, 15, 4, 5));
// '"1906-01-02T15:04:05.000Z"'
JSON.stringify({ x: 5, y: 6 });
// '{"x":5,"y":6}'
JSON.stringify([new Number(3), new String("false"), new Boolean(false)]);
// '[3,"false",false]'
// æååããã¼ã¨ãªã£ãé
åè¦ç´ ã¯åæå¯è½ã§ã¯ãªããJSON ã§ã¯æå³ããªããªã
const a = ["foo", "bar"];
a["baz"] = "quux"; // a: [ 0: 'foo', 1: 'bar', baz: 'quux' ]
JSON.stringify(a);
// '["foo","bar"]'
JSON.stringify({ x: [10, undefined, function () {}, Symbol("")] });
// '{"x":[10,null,null,null]}'
// æ¨æºãã¼ã¿æ§é
JSON.stringify([
new Set([1]),
new Map([[1, 2]]),
new WeakSet([{ a: 1 }]),
new WeakMap([[{ a: 1 }, 2]]),
]);
// '[{},{},{},{}]'
// åä»ãé
å
JSON.stringify([new Int8Array([1]), new Int16Array([1]), new Int32Array([1])]);
// '[{"0":1},{"0":1},{"0":1}]'
JSON.stringify([
new Uint8Array([1]),
new Uint8ClampedArray([1]),
new Uint16Array([1]),
new Uint32Array([1]),
]);
// '[{"0":1},{"0":1},{"0":1},{"0":1}]'
JSON.stringify([new Float32Array([1]), new Float64Array([1])]);
// '[{"0":1},{"0":1}]'
// toJSON()
JSON.stringify({
x: 5,
y: 6,
toJSON() {
return this.x + this.y;
},
});
// '11'
// ã·ã³ãã«:
JSON.stringify({ x: undefined, y: Object, z: Symbol("") });
// '{}'
JSON.stringify({ [Symbol("foo")]: "foo" });
// '{}'
JSON.stringify({ [Symbol.for("foo")]: "foo" }, [Symbol.for("foo")]);
// '{}'
JSON.stringify({ [Symbol.for("foo")]: "foo" }, (k, v) => {
if (typeof k === "symbol") {
return "a symbol";
}
});
// undefined
// åæå¯è½ã§ãªãããããã£:
JSON.stringify(
Object.create(null, {
x: { value: "x", enumerable: false },
y: { value: "y", enumerable: true },
}),
);
// '{"y":"y"}'
// BigInt ã®å¤ã¯ä¾å¤ãçºç
JSON.stringify({ x: 2n });
// TypeError: BigInt value can't be serialized in JSON
ãªãã¬ã¤ãµã¼ã¨ãã¦é¢æ°ãç¨ããä¾
function replacer(key, value) {
// ããããã£ããã£ã«ã¿ã¼ãã
if (typeof value === "string") {
return undefined;
}
return value;
}
const foo = {
foundation: "Mozilla",
model: "box",
week: 45,
transport: "car",
month: 7,
};
JSON.stringify(foo, replacer);
// '{"week":45,"month":7}'
replacer
ã§æåã®ãªãã¸ã§ã¯ãã¨ç©ºæååããã¼ã¨ããããããã£ãåºå¥ãããå ´åã¯ã(両æ¹ã®å ´åã«ãã㦠key
ã¯ç©ºæååã¨ãªããvalue
ã¯ãªãã¸ã§ã¯ããåãããã®ã§) ç¹°ãè¿ãã®åæ°ã®è¨é²ãå¿
è¦ã«ãªãã§ãããï¼æåã®ç¹°ãè¿ãããå¾ã®å ´åãæ¬å½ã«ç©ºæååã®ãã¼ã§ãï¼ã
function makeReplacer() {
let isInitial = true;
return (key, value) => {
if (isInitial) {
isInitial = false;
return value;
}
if (key === "") {
// (æåã®ãªãã¸ã§ã¯ã以å¤ã®) ååã "" ã§ããããããã£ããã¹ã¦åãé¤ã
return undefined;
}
return value;
};
}
const replacer = makeReplacer();
console.log(JSON.stringify({ "": 1, b: 2 }, replacer)); // "{"b":2}"
ãªãã¬ã¤ãµã¼ã¨ãã¦é
åã使ç¨
const foo = {
foundation: "Mozilla",
model: "box",
week: 45,
transport: "car",
month: 7,
};
JSON.stringify(foo, ["week", "month"]);
// '{"week":45,"month":7}', "week" 㨠"month" ããããã£ã ããä¿æããã
弿° space ã®ä½¿ç¨
åºåãç©ºç½ 1 ã¤ã§ã¤ã³ãã³ããã¾ãã
console.log(JSON.stringify({ a: 2 }, null, " "));
/*
{
"a": 2
}
*/
ã¿ãæåã使ãã¨ãæ¨æºçãªè¡¨ç¤ºã®æ´å½¢ã¨åæ§ã«ãªãã¾ãã
console.log(JSON.stringify({ uno: 1, dos: 2 }, null, "\t"));
/*
{
"uno": 1,
"dos": 2
}
*/
toJSON() ã®æå
ãªãã¸ã§ã¯ãã« toJSON()
ãå®ç¾©ãããã¨ã§ãã·ãªã¢ã©ã¤ãºã®æåããªã¼ãã¼ã©ã¤ãã§ãã¾ãã
const obj = {
data: "data",
toJSON(key) {
return key ? `Now I am a nested object under key '${key}'` : this;
},
};
JSON.stringify(obj);
// '{"data":"data"}'
JSON.stringify({ obj });
// '{"obj":"Now I am a nested object under key 'obj'"}'
JSON.stringify([obj]);
// '["Now I am a nested object under key '0'"]'
循ç°åç
§ãã·ãªã¢ã©ã¤ãºããå ´åã® JSON.stringify() ã«é¢ããåé¡
JSON å½¢å¼ã¯ãªãã¸ã§ã¯ãåç
§ã«å¯¾å¿ãã¦ããªãããï¼IETF è稿ã¯ããã¾ããï¼ã循ç°åç
§ã®ãããªãã¸ã§ã¯ããã¨ã³ã³ã¼ããããã¨ãã㨠TypeError
ãçºçãã¾ãã
const circularReference = {};
circularReference.myself = circularReference;
// 循ç°åç
§ãã·ãªã¢ã©ã¤ãºãã㨠"TypeError: cyclic object value" ãçºç
JSON.stringify(circularReference);
循ç°åç §ãã·ãªã¢ã©ã¤ãºããããã«ã¯ãããã«å¯¾å¿ããã©ã¤ãã©ãªã使ç¨ããã (Douglas Crockford ã«ãã cycle.js ãªã©)ãèªåèªèº«ã§è§£æ±ºçãå®è£ ãããããæ¹æ³ãããã¾ãã循ç°åç §ãæ¢ç´¢ãã¦ã·ãªã¢ã©ã¤ãºãããå¤ã«ç½®ãæãã (ã¾ãã¯åé¤ãã) å¿ è¦ãããã§ãããã
JSON.stringify()
ããªãã¸ã§ã¯ãããã£ã¼ãã³ãã¼ããããã«ä½¿ã£ã¦ããå ´åã¯ããããã« structuredClone()
ã使ããããªãããããã¾ããããã®é¢æ°ã¯å¾ªç°åç
§ã«å¯¾å¿ãã¦ãã¾ããv8.serialize()
ãªã©ã®ãã¤ããªã·ãªã¢ã©ã¤ãºãè¡ã JavaScript ã¨ã³ã¸ã³ã® API ãã循ç°åç
§ã«å¯¾å¿ãã¦ãã¾ãã
ã¦ã¼ã¶ã¼ã使ãããªãã¸ã§ã¯ããæ ¼ç´ãããã©ã¦ã¶ã¼ãéããå¾ã«å¾©å
ã§ããããã«ãããå ´åã¯ä»¥ä¸ã®ä¾ã JSON.stringify()
ãé©ç¨ããæ¨¡ç¯ä¾ã§ãã
// JSON ã®ä¸ä¾ã使
const session = {
screens: [],
state: true,
};
session.screens.push({ name: "screenA", width: 450, height: 250 });
session.screens.push({ name: "screenB", width: 650, height: 350 });
session.screens.push({ name: "screenC", width: 750, height: 120 });
session.screens.push({ name: "screenD", width: 250, height: 60 });
session.screens.push({ name: "screenE", width: 390, height: 120 });
session.screens.push({ name: "screenF", width: 1240, height: 650 });
// JSON.stringify() ã§ JSON æååã«å¤æãã¦ãã
// session ã®ååã§ localStorage ã«ä¿å
localStorage.setItem("session", JSON.stringify(session));
// JSON.stringify() ã§çæãã㦠localStorage ã«ä¿åãããæååã
// åã³ JSON ãªãã¸ã§ã¯ãã«å¤æããæ¹æ³ã®ä¾
const restoredSession = JSON.parse(localStorage.getItem("session"));
// ããã§å¤æ° restoredSession ã«ã¯ localStorage ã«ä¿åããã¦ãã
// ãªãã¸ã§ã¯ããå
¥ã£ã¦ãã
console.log(restoredSession);
Well-formed JSON.stringify()
well-formed JSON.stringify 仿§ãå®è£ ãã¦ããã¨ã³ã¸ã³ã¯ããµãã²ã¼ãæåãU+D800 ãã U+DFFF ã¾ã§ã®ãã¹ã¦ã®ã³ã¼ããã¤ã³ããããªãã©ã«ã§ã¯ãªã Unicode ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã使ç¨ãã¦æåååãã¾ãããã®å¤æ´åã¯ããã®ãããªæååã¯å¦¥å½ãª UTF-8 ã¾ã㯠UTF-16 ã§ã¨ã³ã³ã¼ãããã¦ãã¾ããã§ããã
JSON.stringify("\uD800"); // '"�"'
ãããããã®å¤æ´ã§ JSON.stringify()
ã¯å¤ç«ãµãã²ã¼ãã JSON ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã«ãã£ã¦è¡¨ãããã«ãªãã妥å½ãª UTF-8 ã¾ã㯠UTF-16 ã§ã¨ã³ã³ã¼ããããã¨ãã§ããããã«ãªãã¾ããã
JSON.stringify("\uD800"); // '"\\ud800"'
ãã®å¤æ´ã§ã¯ããµãã²ã¼ãæåã® Unicode ã¨ã¹ã±ã¼ãããµãã²ã¼ãæåã¨åä¸ã®ãã®ã¨ãã¦æ±ãããã JSON.stringify()
ã®çµæããJSON ããã¹ãã妥å½ã§ããéãã©ã®ãããªãã®ã§ãåãä»ãã JSON.parse()
ã®ãã㪠API ã«æ¸¡ããã¨ãã«å¾æ¹äºææ§ãããã¾ããJSON.stringify()
ã®çµæãç´æ¥è§£æããå ´åã®ã¿ãJSON.stringify()
ããããã®ã³ã¼ããã¤ã³ãã«å¯¾ã㦠2 éãã®ã¨ã³ã³ã¼ãã£ã³ã°ãããå¯è½æ§ããããã¨ã«æ³¨æãã¦æ±ãå¿
è¦ãããã¾ãã
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