äžè¬çãªJSONæ§æãšã©ãŒãšããªããŒã¿ãŒã§ã®ä¿®æ£æ¹æ³
äžè¬çãªJSONãšã©ãŒ
JSONã®å³æ Œãªæ§æèŠåã¯ã1æåã§ã誀ã£ãŠé 眮ãããšããã¥ã¡ã³ãå šäœãå£ããããšãæå³ããŸããæãäžè¬çãªJSONãšã©ãŒãçè§£ããããšã§ãããéããããã°ã§ããåãéã¡ãç¹°ãè¿ãããšãé¿ããããŸãã以äžã¯ãéçºè ãééããæãé »ç¹ãªåé¡ãšãããããã®æç¢ºãªèª¬æãšä¿®æ£æ¹æ³ã§ãã
1. æ«å°Ÿã®ã«ã³ã
ãšã©ãŒïŒ ãªããžã§ã¯ããŸãã¯é
åã®æ«å°Ÿã®Unexpected token
æ«å°Ÿã®ã«ã³ãã¯JavaScriptã®ãªããžã§ã¯ããšé åã§ã¯èš±å¯ãããŠããŸãããJSONã§ã¯å³æ Œã«çŠæ¢ãããŠããŸãã
ç¡å¹ãªJSONïŒ
{
"name": "Alice",
"age": 30,
}
ä¿®æ£ïŒ æåŸã®ã¢ã€ãã ã®åŸã®ã«ã³ããåé€ããŸãã
{
"name": "Alice",
"age": 30
}
æ«å°Ÿã®ã«ã³ããæã€é åïŒ
// Invalid
[1, 2, 3,]
// Valid
[1, 2, 3]
2. ããŒãå²ãåŒçšç¬Šã®æ¬ èœãŸãã¯èª€ã
ãšã©ãŒïŒ Unexpected identifierãŸãã¯Expected double-quoted property name
JSONã§ã¯ããã¹ãŠã®ãªããžã§ã¯ãããŒãäºéåŒçšç¬Šã§å²ãå¿ èŠããããŸããäžéåŒçšç¬ŠãšåŒçšç¬Šã®ãªãããŒã¯ãJavaScriptã§ã¯æ©èœããŠãJSONã§ã¯æå¹ã§ã¯ãããŸããã
ç¡å¹ãªJSONïŒ
{
name: "Alice",
'occupation': "Engineer"
}
ä¿®æ£ïŒ åžžã«ããŒãäºéåŒçšç¬Šã§å²ã¿ãŸãã
{
"name": "Alice",
"occupation": "Engineer"
}
3. æååå€ã«äžéåŒçšç¬Šã䜿çšãã
ãšã©ãŒïŒ Unexpected identifierãŸãã¯Unterminated string
ããŒãšåæ§ã«ãJSONã§ã¯æååå€ã«ãäºéåŒçšç¬Šã䜿çšããå¿ èŠããããŸããäžéåŒçšç¬Šã¯æå¹ã§ã¯ãããŸããã
ç¡å¹ãªJSONïŒ
{ "greeting": 'Hello, world!' }
ä¿®æ£ïŒ äžéåŒçšç¬ŠãäºéåŒçšç¬Šã«çœ®ãæããŸãã
{ "greeting": "Hello, world!" }
ãã³ãïŒ æååã«äºéåŒçšç¬Šãå«ãŸããå Žåã¯ãããã¯ã¹ã©ãã·ã¥ã§ãšã¹ã±ãŒãããŸãïŒ"He said, \"Hello\""ã
4. ãšã¹ã±ãŒããããŠããªãç¹æ®æå
ãšã©ãŒïŒ Unexpected tokenãŸãã¯Invalid character
JSONæååã§ã¯ç¹å®ã®æåããšã¹ã±ãŒãããå¿
èŠããããŸãïŒäºéåŒçšç¬ŠïŒ"ïŒãããã¯ã¹ã©ãã·ã¥ïŒ\ïŒãããã³å¶åŸ¡æåã§ãã
ç¡å¹ãªJSONïŒ
{
"path": "C:\Users\Documents\file.json",
"quote": "He said "hello""
}
ä¿®æ£ïŒ ããã¯ã¹ã©ãã·ã¥ãšäºéåŒçšç¬Šãé©åã«ãšã¹ã±ãŒãããŸãã
{
"path": "C:\\Users\\Documents\\file.json",
"quote": "He said \"hello\""
}
JSONãšã¹ã±ãŒãã·ãŒã±ã³ã¹ã®å®å šãªãªã¹ã
| ã·ãŒã±ã³ã¹ | æå³ |
|----------|-----------|
| \" | äºéåŒçšç¬Š |
| \\ | ããã¯ã¹ã©ãã·ã¥ |
| \/ | ã¹ã©ãã·ã¥ |
| \b | ããã¯ã¹ããŒã¹ |
| \f | ãã©ãŒã ãã£ãŒã |
| \n | æ¹è¡ |
| \r | ãã£ãªããžãªã¿ãŒã³ |
| \t | ã¿ã |
| \uXXXX | UnicodeæåïŒäŸïŒeã®Ã©ïŒ |
5. ç¡å¹ãªæ°å€åœ¢åŒ
ãšã©ãŒïŒ Unexpected numberãŸãã¯Invalid number
JSONã«ã¯æ°å€ã®ãã©ãŒãããã«é¢ããç¹å®ã®èŠåããããŸãïŒ
- å
é ã®ãŒãã¯èš±å¯ãããŸããïŒ
01ã¯ç¡å¹ïŒ - åäžã®å
é ãŒãã¯æ°å€
0ã«ã®ã¿èš±å¯ãããŸã - æ°å€ã¯æ«å°Ÿã«ããããä»ããããšã¯ã§ããŸããïŒ
10.ã¯ç¡å¹ïŒ - 16鲿°ã8鲿°ã2鲿°ã®åœ¢åŒã¯ãµããŒããããŸãã
ç¡å¹ãªJSONïŒ
{
"invalid1": 01,
"invalid2": 10.,
"invalid3": 0xFF,
"invalid4": 1,000
}
ä¿®æ£ïŒ
{
"valid1": 1,
"valid2": 10.0,
"valid3": 255,
"valid4": 1000
}
6. ç¡å¹ãªå€ïŒundefinedãNaNãInfinity
ãšã©ãŒïŒ undefinedãNaNãInfinityã«å¯ŸããUnexpected token
JavaScriptã«ã¯JSONã«çžåœãããã®ããªãå€ããããŸãããããã¯ããŒã¹ãšã©ãŒãåŒãèµ·ãããŸãïŒ
ç¡å¹ãªJSONïŒ
{
"undefinedVal": undefined,
"notANumber": NaN,
"infinity": Infinity
}
ä¿®æ£ïŒ æå¹ãªJSONå€ã«çœ®ãæããããèŠçŽã䜿çšããŸãã
{
"undefinedVal": null,
"notANumber": null,
"infinity": 1.7976931348623157e+308
}
7. äœåãªã«ã³ããŸãã¯æ¬ èœããã«ã³ã
ãšã©ãŒïŒ Expected commaãŸãã¯Unexpected token
JSONã§ã¯ã«ã³ãã¯ãã¹ãŠã®ããŒ/å€ãã¢ãšé åèŠçŽ ãåºåãå¿ èŠããããŸãããæåŸã®ã¢ã€ãã ã®åŸã«ä»ããŠã¯ãªããŸããã
æ¬ èœããã«ã³ãïŒç¡å¹ïŒïŒ
{
"name": "Alice"
"age": 30
}
ä¿®æ£ïŒ æ¬ èœããŠããã«ã³ãã远å ããŸãã
{
"name": "Alice",
"age": 30
}
8. æ·±ããã¹ããããæ§é ã®åé¡
ãšã©ãŒïŒ Maximum call stack size exceededãŸãã¯ããŒãµãŒã®ã¿ã€ã ã¢ãŠã
æ§æãšã©ãŒã§ã¯ãããŸããããæ·±ããã¹ããããJSONïŒ10ã¬ãã«ä»¥äžïŒã¯ããã©ãŒãã³ã¹ã®åé¡ãåŒãèµ·ããããããã°ãéåžžã«å°é£ã«ããå¯èœæ§ããããŸãã
åé¡ã®ããæ§é ïŒ
{
"level1": {
"level2": {
"level3": {
"level4": {
"level5": {
"level6": {
"value": "too deep"
}
}
}
}
}
}
}
ããè¯ãã¢ãããŒãïŒ æ§é ããã©ããåããããåç §ã䜿çšããŸãã
{
"users": {
"alice": { "role": "admin" }
},
"permissions": {
"admin": ["read", "write", "delete"]
}
}
9. éå§ãŸãã¯çµäºã®æ³¢æ¬åŒ§ã®æ¬ èœ
ãšã©ãŒïŒ Expected ',' or '}'ãŸãã¯Unexpected end of JSON input
äžèŽããªãæ³¢æ¬åŒ§ãšè§æ¬åŒ§ã¯ãç¹ã«å€§ããªãã¡ã€ã«ãææžãã®JSONãã¡ã€ã«ã§ãJSONãšã©ãŒã®äžè¬çãªåå ã§ãã
ç¡å¹ãªJSONïŒ
{
"name": "Alice",
"items": [1, 2, 3
}
ä¿®æ£ïŒ ãã¹ãŠã®{ã«å¯Ÿå¿ãã}ãããããã¹ãŠã®[ã«å¯Ÿå¿ãã]ãããããšã確èªããŸãã
{
"name": "Alice",
"items": [1, 2, 3]
}
ããã®ãã³ãïŒ éããšéãã®æ¬åŒ§ãèŠèŠçã«äžèŽãããããã«ãJSONãé©åã«ã€ã³ãã³ãããŠãã ãããJSONãã©ãŒããã¿ãŒããããèªåçã«è¡ããŸãã
JSONãšã©ãŒã广çã«ãããã°ããæ¹æ³
- JSONããªããŒã¿ãŒã䜿çšãã -- JSONãç¡æã®JSONããªããŒã¿ãŒã«è²Œãä»ããŠãæåã®ãšã©ãŒã®æ£ç¢ºãªè¡ãšåãååŸããŸãã
- 段éçã«æ€èšŒãã -- 倧ããªãã¡ã€ã«ã®å Žåããšã©ãŒãåãåããããã«ã»ã¯ã·ã§ã³ããšã«æ€èšŒããŸãã
- ã³ããŒïŒããŒã¹ãã®ã¢ãŒãã£ãã¡ã¯ãã«æ³šæãã -- äžå¯èŠæåãã¹ããŒãåŒçšç¬Šãæ¹è¡ããªãã¹ããŒã¹ãã¯ãŒãããã»ããµãWebããŒãžããçŽã蟌ãããšããããããŸãã
- æåãšã³ã³ãŒãã£ã³ã°ã確èªãã -- ãã¡ã€ã«ãUTF-8ã§ä¿åãããŠããããšã確èªããŸããä»ã®ãšã³ã³ãŒãã£ã³ã°ã¯äžå¯èŠã®ãšã©ãŒãçããå¯èœæ§ããããŸãã
- ãªã³ã¿ãŒã䜿çšãã --
jsonãã©ã°ã€ã³ä»ãã®ESLintãªã©ã®ããŒã«ãéçºäžã«JSONãšã©ãŒãæ€åºããŸãã
JSONããŒãµãŒã¯éåžžãæåã®æ§æãšã©ãŒã®ã¿ãå ±åããããšã«æ³šæããŠãã ããããã®ãšã©ãŒãä¿®æ£ããåæ€èšŒããããã¥ã¡ã³ããåæ ŒãããŸã§ç¹°ãè¿ããŸããåœãµã€ãã®JSONãã©ãŒããã¿ãŒïŒããªããŒã¿ãŒããŒã«ã¯ããã®ããã»ã¹ãè¿ éåããããã®å³æã®è©³çްãªãšã©ãŒã¡ãã»ãŒãžãæäŸããŸãã