ã·ãªã¢ã©ã€ãºã®ä»çµã¿ â è²·ãç©ã¡ã¢ãä¿åããŠãèªã¿æ»ã
ååãšæ°éã¯æ»ããæ¥ä»ã®åã¯å€ãã
ãŸãã¯ãè²·ãç©ã¡ã¢ãJSONã«ãã
å¥ã®ã¢ããªãžå€ãæž¡ããšããããã°ã©ã å
ã®ããŒã¿ãå
±éã®è¡šçŸãžå€ããŸããNode.jsãããã°serialize-demo.jsãšããŠä¿åããnode serialize-demo.jsã§è©ŠããŠã¿ãŸãããã
const memo = {
name: "ããã",
quantity: 2,
createdAt: new Date("2026-01-01T00:00:00Z"),
};
const json = JSON.stringify(memo);
const bytes = new TextEncoder().encode(json);
const restored = JSON.parse(new TextDecoder().decode(bytes));
console.log(json);
console.log(restored.name, restored.quantity);
console.log(typeof restored.createdAt);
{"name":"ããã","quantity":2,"createdAt":"2026-01-01T00:00:00.000Z"}
ããã 2
string
JSON.stringifyã¯æååãäœããTextEncoderã¯UTF-8ã®ãã€ãåãžå€æããŸããèªã¿æ»ããšååãšæ°éã¯äœ¿ããŸãããæ¥ä»ã¯Dateãªããžã§ã¯ãã§ã¯ãªãæååã§ããå³ã®ç¢å°ã¯ãã®å€æã§ããããã¯ãŒã¯éä¿¡ããã¡ã€ã«ä¿åãè¡ãäŸã§ã¯ãããŸããã
圢åŒã§è¡šãããã®ã確èªãã
JavaScriptã®JSON倿ã§ã¯ããªããžã§ã¯ãå ã®undefinedã颿°ãªã©ã¯çãããé åå ã§ã¯nullã«ãªãå ŽåããããŸããéåžžã®BigIntã埪ç°åç §ã¯ãšã©ãŒã«ãªããŸããMapãSetãã¯ã©ã¹ã®æ¯ãèãçãå ã®ãŸãŸä¿åã§ãããšèããŸããã
èªã¿æ»ããæ¥æãDateã«ãããªããæåŸ ããæååãæ€èšŒããŠãã倿ããŸããJSONã®æ§æãæ£ããããšãšãå¿ èŠãªé ç®ããããæ°éãèš±ãå€ã§ããããšã¯å¥ã§ãã
ããã¹ãã»ãã€ããªã»ã¹ããŒãã®åœ¹å²
| èŠ³ç¹ | éžã¶ãšãã®åã |
|---|---|
| 人ãèªã | éä¿¡ãä¿åã®å 容ãç®ã§ç¢ºèªãããã |
| ã¹ããŒã | åããã£ãŒã«ãã®å¥çŽãã©ãã§ç®¡çããã |
| 倧ãããšé床 | å®éã®ããŒã¿ã»å§çž®ã»å®è£ ã§ã©ããªãã |
| 察å¿ç°å¢ | éãæãšèªã¿æã®èšèªãçãæ±ããã |
JSONãProtobufãMessagePackçã§ç¹æ§ã¯éããŸãããProtobufã¯ãã€ã§ãJSONã®1/5ã§10åéããã®ãããªæ°å€ã ãã§æ±ºãããåãæ¡ä»¶ã®å®ããŒã¿ã§æž¬ããŸãã
ããå°ã詳ããïŒProtobufã®å€æŽãšå ¥åã®å®å šæ§
Protobufã¯ãã£ãŒã«ãçªå·ã§ããŒã¿ãèå¥ããŸãã䜿ãå§ããçªå·ãå€ãããåé€ããçªå·ã¯reservedã§åå©çšãé²ããŸãããã€ããªäžã§å®å šãªå€æŽãšãæ¡ä»¶ä»ãã®å€æŽãJSON/TextFormatã®æ¡ä»¶ã¯åããŠå ¬åŒã®äºææ§èŠåã確èªããŸãã
æªç¥ã®ãã£ãŒã«ããæ±ããããšã ãã§ãã¢ããªã®æå³ãŸã§äºæã«ãªããšã¯éããŸãããæ§ã¯ã©ã€ã¢ã³ãã®æ¯ãèããæ¢å®å€ãååšã®æç¡ã倿Žããé çªããã¹ãããŸãã
Pythonã®pickleã¯ãä¿¡é Œã§ããªãå ¥åããä»»æã®ã³ãŒããå®è¡ãããå±éºããããããå ¬åŒè³æãä¿¡çšã§ããããŒã¿ã ããèªã¿èŸŒãããæ¡å ããŠããŸããJSONãProtobufãéžãã§ããå ¥åã®éã»åã»å€ã»çšéã®æ€æ»ãšèªå¯ã¯å¿ èŠã§ãã
ð§ ãã³ã®ã³å çã®ãŸãšãïŒãã·ãªã¢ã©ã€ãºãã£ãŠåºãŠããããå€ããä¿åãéä¿¡ã«äœ¿ãã衚çŸãžè©°ããããšããšæãã°ã ãããOKïŒ
éãæ¹ã¯gRPCã®ä»çµã¿ãAPIã®å ¥å£ã¯APIéçºå ¥éã§ç¶ããããŸãã
åèè³æ
- MDNïŒJSON.stringify â Dateã»çç¥ããå€ã»åŸªç°åç §ãšBigIntã®æ¡ä»¶
- Protocol BuffersïŒproto3 guide â ãã£ãŒã«ãçªå·ã»reservedã»å€æŽã®äºææ§ã®åºå
- PythonïŒpickle â ä¿¡é Œã§ããªãããŒã¿ã®èªã¿èŸŒã¿ãšã³ãŒãå®è¡ã®å±éº