JSONãçè§£ããŠJavaScriptã®stringifyãšparseã§æäœããŠã¿ãã
æè¿ã¯ããã°ã©ãã³ã°èšèªãåããåºã䜿çšãããŠããJSONã«ã€ããŠè§£èª¬ããèšäºã§ããJSONãšã¯äœãªã®ããJSONã®æžãæ¹ãšãã£ãåºæ¬ã«ã€ããŠè©³ãã解説ããŸããJavaScriptã§JSONã䜿ãããstringify颿°ãšparse颿°ã䜿çšãããšã³ã³ãŒããšãã³ãŒãã®ä»æ¹ã玹ä»ããŸããæè¿ã§ã¯ããŒã¿éä¿¡ãå¿
èŠãªå Žé¢ã§ã¯èšèªãåããæŽ»çšãããŠããJSONã
ããŒã¿ã®åãæž¡ãããããšãã«JSONã䜿ãã°ãšãŠã䟿å©ãªã®ã§ãã€ã³ã¿ã©ã¯ãã£ããªãµã€ãã§ã¯å¿
é ã®æè¡ãšãããã§ãããã
ãã®èšäºã§ã¯ãJSONã䜿ãå§ããããã«å¿
èŠãªåºæ¬çãªç¥èãå®éã®ã³ãŒãã玹ä»ããªãã解説ããŠãããŸãã
JSONã¯è»œéãªããŒã¿äº€æãã©ãŒããã
JSONãšã¯
JSONãšã¯ãJavaScript Object Notationãã®ç¥ã§ãããšããšã¯JavaScriptãšé£æºããä»ã®èšèªãšããŒã¿ã®ãããšããããããã«èãåºãããã軜éãªããŒã¿äº€æãã©ãŒãããã§ãã
å®éã«ã¯JavaScriptã ãã§ãªãPHPãPythonãšãã£ããã®ä»ã®èšèªéã®ãããšãã§ã䜿ãããããããŒã¿éä¿¡ãå¿
èŠãšããããŸããŸãªã·ãŒã³ã§ãšãŠãéå®ãããŠããŸãã
JSONã¯ãªããžã§ã¯ãæ§é ã衚çŸããããšãã§ããŸããè¿ããã©ãŒãããã«XMLããããŸãããJSONã¯äººéãèŠãŠãçŽæçã«çè§£ããããèšæ³ã§æžãããŠãããXMLã«æ¯ã¹ããšã¿ã°éãå°ãªããŠè»œéãšããç¹åŸŽããããŸããéä¿¡ã§å©çšããããã«ã¯è»œéã§ããããšã¯å€§ããªå©ç¹ã§ãã
ãããã£ãç¹åŸŽããããŒã¿éä¿¡ãå¿
èŠãªå Žé¢ã§åºã掻çšããããã©ãŒãããã«ãªã£ãã®ã§ãã
å®ã¯JSONã®æŽå²ã¯é·ãã仿§ãèŠå®ãããã®ã¯2006幎ã§ããã1990幎代ããæŽ»çšãããŠããããã§ãã
JSONã®æžãæ¹
åºæ¬çãªJSONã®æžãæ¹ã«ã€ããŠèª¬æããŸãã
JSONããŒã¿ã¯ãããŒãšå€ã®çµã¿åããã§æ§æãããŸããããŒã¯æååã§ãå€ã¯æååãæ°å€ãçåœå€ãé åããªããžã§ã¯ããnullã®ããããã®åã䜿çšããããšãã§ããŸãã
JSONã«ãããããŒãšå€ã®çµã¿åããã¯ãã{ããšã}ãã§å²ãããŸãããããŠããŒãšå€ã®çµã¯ããããŒåã:ãå€ããšãã圢åŒã§èšè¿°ããŸãã
{
"ããŒå1": "å€1",
"ããŒå2": "å€2",
...
}
å€ãæååã®å Žåã«ã¯ä»¥äžã®ããã«ããã«ã¯ã©ãŒããŒã·ã§ã³ïŒâïŒã§å²ã¿ãŸãã
{
"name": âYamadaâ,
"address": âTokyoâ,
...
}
å€ãšããŠé åã䜿çšãããå Žåã«ã¯è§æ¬åŒ§ïŒ[ ãš ]ïŒã§å²ã¿ãå€ãã«ã³ãã§åºåããŸãã
{
"ããŒå1": [ "å€1", "å€2", ...],
"ããŒå2": [ 123, 789, ...],
...
}
æ°å€ã¯æŽæ°ãæµ®åå°æ°ã䜿çšããããšãã§ããŸãã
{
âheight": 35.8,
"price": 500,
...
}
以äžã«JSONã®æžãæ¹ã®äŸã瀺ããŸãã
{
"name": "Taro Yamada",
"age": 25,
"isMarried": true,
"hobbies": [
"driving",
"fishing",
"traveling"
]
}
JavaScriptã«ãããJSONã®æ±ãæ¹
ããã§ã¯JavaScriptã§JSONãã©ã®ããã«æ±ããã説æããŸãã
ãªããžã§ã¯ããJSONãžãšã³ã³ãŒãããããã«ã¯JSON.stringify()ã䜿çšããŸãã
ãŸããåãåã£ãJSONã¯ããã¹ãããŒã¿ã§ãããããã®ãŸãŸã§ã¯æ±ããé£ããããªããžã§ã¯ãã«ãã³ãŒãããŠæäœããããšãå€ãã§ãã
ãªããžã§ã¯ãã®JSONãžã®ãšã³ã³ãŒã
JavaScriptã§ãªããžã§ã¯ããJSONãžãšã³ã³ãŒãããããã«ã¯ãJSON.stringify()ã䜿çšããŸãã
JSON.stringify()ã®æ»ãå€ã¯JSONèšæ³ã®ããã¹ãã§ãã
const obj = {
name: 'Taro Yamada',
age: 25,
isEngineer: true
};
const objAsString = JSON.stringify(obj);
console.log(objAsString);
// åºåçµæ: {"name":"Taro Yamada","age":25,"isEngineer":true}
ãã®äŸã§å€æ°objã¯ãããããã£nameãageãisEngineerãæã€ãªããžã§ã¯ãã§ãã
JSON.stringify()ã¯åŒæ°ãšããŠãªããžã§ã¯ããåãåãããã®ãªããžã§ã¯ããJSONèšæ³ã®æååã«ãšã³ã³ãŒãããŠè¿ããŸãã
ãããŠããã®æååãã³ã³ãœãŒã«ã«åºåããŠããŸãã
ãŸããJSON.stringify()ã§ã¯ãªãã·ã§ã³ãæå®ããããšã§ã€ã³ãã³ããããããã£ã®ãã£ã«ã¿ãªã³ã°ãªã©ãçµæã®æååããã©ãŒãããããããšãã§ããŸãã
const obj = {
name: 'Taro Yamada',
age: 25,
isEngineer: true
};
const objAsString = JSON.stringify(obj, null, 2);
console.log(objAsString);
/* åºåçµæ:
{
"name": "Taro Yamada",
"age": 25,
"isEngineer": true
}
*/
ãã®äŸã§ã¯ãJSON.stringify()ã®ç¬¬2åŒæ°ãnullã第3åŒæ°ã2ãšããŠããŸãã
第2åŒæ°ã¯replacerãšãããã®ã§ãJSONãšããŠåºåããå€ã®èª¿æŽãã§ããã®ã§ãããããã§ã¯nullãšããŠå
šãŠãã®ãŸãŸåºåããŸãã
第3åŒæ°ã¯ãçµæã®æååã®ã€ã³ãã³ãã§äœ¿çšããã¹ããŒã¹ã®æ°ãæå®ãããã®ã§ãã
çµæã®JSONæååã¯ã³ã³ãœãŒã«ã«åºåããããªããžã§ã¯ãã®åã¬ãã«ãã¹ããŒã¹2ã€åã€ã³ãã³ããããŠããããšãåãããŸãã
JSONæååãããªããžã§ã¯ããžã®ãã³ãŒã
åãåã£ãæååã®JSONããŒã¿ãããæ±ããããããããã«ãJavaScriptã®ãªããžã§ã¯ãã®åœ¢åŒã«å€æããŠã¿ãŸãããã
ããã§ã¯JavaScriptã®JSON.parse()ã䜿ã£ãŠãJSONæååããªããžã§ã¯ãã«å€æããäŸã瀺ããŸãã
const jsonString = '{"name":"Taro Yamada","age":25,"isEngineer":true}';
const obj = JSON.parse(jsonString);
console.log(obj);
// åºåçµæ: { name: 'Taro Yamada', age: 25, isEngineer: true }
ãã®äŸã§ã¯ãjsonString倿°ã«ãJSONèšæ³ã®æååãæ ŒçŽãããŠããŸãã
JSON.parse()ã¯ãåŒæ°ãšããŠæååãåãåããJavaScriptãªããžã§ã¯ããè¿ããŸãã
ãããŠããã®ãªããžã§ã¯ããã³ã³ãœãŒã«ã«åºåããŠããŸãã
ãŸããJSON.parse()ã§ã¯reviverïŒãªãã€ããŒïŒé¢æ°ã䜿çšããããšã§ãããŒã¹äžã«ãªããžã§ã¯ãã®ããããã£ã倿ããããšãã§ããŸãã
const jsonString = '{"name":"Taro Yamada","age":25,"isEngineer":true}';
const obj = JSON.parse(jsonString, (key, value) => {
if (key === 'age') {
return value + 10;
}
return value;
});
console.log(obj);
// Output: { name: 'Taro Yamada', age: 35, isEngineer: true }
ãã®äŸã§ã¯ãJSON.parse()ã®ç¬¬2åŒæ°ã«ãkeyãšvalueã®2ã€ã®åŒæ°ãåãreviver颿°ãæå®ããŠããŸãã
ãã®é¢æ°ã¯ãããŒããageãã§ãããã©ããããã§ãã¯ãããageãã§ããã°ããã®å€ã«10ãè¶³ããå€ãè¿ããŸãã
çµæãšããŠãªããžã§ã¯ãå
ã®ageã®å€ã¯10å ç®ããããã®çµæãã³ã³ãœãŒã«ã«åºåãããŸãã
ãŸãšã
JSONã¯ããšããšJavaScriptã§éä¿¡ãè¡ãéã®è»œéãªããŒã¿ãã©ãŒããããšããŠäœ¿çšãããŠããŸããããçŸåšã§ã¯ãã®äœ¿ãåæã®è¯ãããèšèªãåããåºã䜿çšãããŠããŸãã
JSONã¯æååã§ãããããããã°ã©ã å
ã§äœ¿çšããããã«ã¯ãªããžã§ã¯ãã«å€æããŠæäœããéä¿¡ã«äœ¿çšããéã«ã¯JSONèšæ³ã®æååã«ãšã³ã³ãŒãããŠäœ¿çšããŸãã
JSONã¯äœ¿çšããå Žé¢ãå€ããããåºæ¬çãªèšæ³ãæ±ãæ¹ã¯çè§£ããŠãããŸãããã
ãã®èšäºã®ããŒã¯ãŒãã«é¢ããå匷äŒã»ã€ãã³ããæ¢ã
TECH PLAYã§ã¯ãITãšã³ãžãã¢åãã®å匷äŒã»ã€ãã³ãæ
å ±ãæäŸããŠããŸãã
èå³ã®ããæ¹ã¯ãã²ãåå ãã ããã













