[{"data":1,"prerenderedAt":1737},["ShallowReactive",2],{"guide-json5-introduction":3},{"id":4,"title":5,"body":6,"date":1729,"description":1730,"extension":1731,"meta":1732,"navigation":597,"path":1733,"readingTime":266,"seo":1734,"stem":1735,"__hash__":1736},"guides\u002Fguides\u002Fjson5-introduction.md","What is JSON5? Features, Syntax, and When to Use It",{"type":7,"value":8,"toc":1706},"minimark",[9,14,18,26,29,33,151,155,158,163,222,227,275,278,282,285,290,373,378,441,444,448,451,456,503,508,536,541,559,633,637,640,644,701,705,733,736,740,743,748,776,781,799,803,806,896,921,925,928,933,1069,1074,1208,1212,1217,1259,1263,1295,1299,1303,1322,1457,1461,1464,1495,1499,1502,1586,1590,1593,1615,1619,1622,1682,1688,1692,1702],[10,11,13],"h2",{"id":12},"what-is-json5","What is JSON5?",[15,16,17],"p",{},"JSON5 is a superset of JSON (JavaScript Object Notation) that aims to make the format more human-friendly while maintaining compatibility with JavaScript's object literal syntax. Created by Andrew Eisenberg in 2012, JSON5 extends JSON with features from ECMAScript 5 (ES5) that many developers wished were in JSON.",[15,19,20,21,25],{},"The key philosophy: ",[22,23,24],"strong",{},"JSON5 is to JSON what ES5 is to ES3"," — it adds syntactic sugar that makes the format easier to write and read, especially for configuration files and human-maintained data.",[15,27,28],{},"While JSON is strictly specified and intentionally limited (no comments, no trailing commas, all keys must be quoted), JSON5 relaxes these restrictions to match what JavaScript developers expect.",[10,30,32],{"id":31},"json5-vs-json-quick-comparison","JSON5 vs JSON: Quick Comparison",[34,35,36,52],"table",{},[37,38,39],"thead",{},[40,41,42,46,49],"tr",{},[43,44,45],"th",{},"Feature",[43,47,48],{},"JSON",[43,50,51],{},"JSON5",[53,54,55,69,82,95,108,120,133],"tbody",{},[40,56,57,63,66],{},[58,59,60],"td",{},[22,61,62],{},"Comments",[58,64,65],{},"❌ Not allowed",[58,67,68],{},"✅ Single and multi-line",[40,70,71,76,79],{},[58,72,73],{},[22,74,75],{},"Trailing Commas",[58,77,78],{},"❌ Syntax error",[58,80,81],{},"✅ Allowed",[40,83,84,89,92],{},[58,85,86],{},[22,87,88],{},"Unquoted Keys",[58,90,91],{},"❌ Must be double-quoted",[58,93,94],{},"✅ Allowed (identifier names)",[40,96,97,102,105],{},[58,98,99],{},[22,100,101],{},"Single Quotes",[58,103,104],{},"❌ Only double quotes",[58,106,107],{},"✅ Allowed for strings",[40,109,110,115,117],{},[58,111,112],{},[22,113,114],{},"Multiline Strings",[58,116,65],{},[58,118,119],{},"✅ With backticks or escaping",[40,121,122,127,130],{},[58,123,124],{},[22,125,126],{},"Numbers",[58,128,129],{},"Limited",[58,131,132],{},"✅ Hex, leading\u002Ftrailing dots",[40,134,135,140,146],{},[58,136,137],{},[22,138,139],{},"Extension",[58,141,142],{},[143,144,145],"code",{},".json",[58,147,148],{},[143,149,150],{},".json5",[10,152,154],{"id":153},"feature-1-comments","Feature 1: Comments",[15,156,157],{},"The most requested feature for JSON is comments, and JSON5 delivers.",[15,159,160],{},[22,161,162],{},"JSON (invalid):",[164,165,170],"pre",{"className":166,"code":167,"language":168,"meta":169,"style":169},"language-json shiki shiki-themes github-light github-dark","{\n  \"name\": \"config\",\n  \u002F\u002F This is a comment - INVALID IN JSON\n  \"version\": 1\n}\n","json","",[143,171,172,181,198,205,216],{"__ignoreMap":169},[173,174,177],"span",{"class":175,"line":176},"line",1,[173,178,180],{"class":179},"sVt8B","{\n",[173,182,184,188,191,195],{"class":175,"line":183},2,[173,185,187],{"class":186},"sj4cs","  \"name\"",[173,189,190],{"class":179},": ",[173,192,194],{"class":193},"sZZnC","\"config\"",[173,196,197],{"class":179},",\n",[173,199,201],{"class":175,"line":200},3,[173,202,204],{"class":203},"sJ8bj","  \u002F\u002F This is a comment - INVALID IN JSON\n",[173,206,208,211,213],{"class":175,"line":207},4,[173,209,210],{"class":186},"  \"version\"",[173,212,190],{"class":179},[173,214,215],{"class":186},"1\n",[173,217,219],{"class":175,"line":218},5,[173,220,221],{"class":179},"}\n",[15,223,224],{},[22,225,226],{},"JSON5 (valid):",[164,228,232],{"className":229,"code":230,"language":231,"meta":169,"style":169},"language-json5 shiki shiki-themes github-light github-dark","{\n  \"name\": \"config\",\n  \u002F\u002F This is a single-line comment\n  \"version\": 1,\n  \u002F* This is a\n     multi-line comment *\u002F\n  \"debug\": true\n}\n","json5",[143,233,234,238,243,248,253,258,264,270],{"__ignoreMap":169},[173,235,236],{"class":175,"line":176},[173,237,180],{},[173,239,240],{"class":175,"line":183},[173,241,242],{},"  \"name\": \"config\",\n",[173,244,245],{"class":175,"line":200},[173,246,247],{},"  \u002F\u002F This is a single-line comment\n",[173,249,250],{"class":175,"line":207},[173,251,252],{},"  \"version\": 1,\n",[173,254,255],{"class":175,"line":218},[173,256,257],{},"  \u002F* This is a\n",[173,259,261],{"class":175,"line":260},6,[173,262,263],{},"     multi-line comment *\u002F\n",[173,265,267],{"class":175,"line":266},7,[173,268,269],{},"  \"debug\": true\n",[173,271,273],{"class":175,"line":272},8,[173,274,221],{},[15,276,277],{},"Comments are invaluable for configuration files where you need to explain why certain values are set.",[10,279,281],{"id":280},"feature-2-trailing-commas","Feature 2: Trailing Commas",[15,283,284],{},"Trailing commas make it easier to add, remove, and reorder items without worrying about removing the comma from the previous line.",[15,286,287],{},[22,288,289],{},"JSON (no trailing comma):",[164,291,293],{"className":166,"code":292,"language":168,"meta":169,"style":169},"{\n  \"items\": [\n    \"apple\",\n    \"banana\",\n    \"orange\"\n  ],\n  \"settings\": {\n    \"theme\": \"dark\",\n    \"lang\": \"en\"\n  }\n}\n",[143,294,295,299,307,314,321,326,331,339,351,362,368],{"__ignoreMap":169},[173,296,297],{"class":175,"line":176},[173,298,180],{"class":179},[173,300,301,304],{"class":175,"line":183},[173,302,303],{"class":186},"  \"items\"",[173,305,306],{"class":179},": [\n",[173,308,309,312],{"class":175,"line":200},[173,310,311],{"class":193},"    \"apple\"",[173,313,197],{"class":179},[173,315,316,319],{"class":175,"line":207},[173,317,318],{"class":193},"    \"banana\"",[173,320,197],{"class":179},[173,322,323],{"class":175,"line":218},[173,324,325],{"class":193},"    \"orange\"\n",[173,327,328],{"class":175,"line":260},[173,329,330],{"class":179},"  ],\n",[173,332,333,336],{"class":175,"line":266},[173,334,335],{"class":186},"  \"settings\"",[173,337,338],{"class":179},": {\n",[173,340,341,344,346,349],{"class":175,"line":272},[173,342,343],{"class":186},"    \"theme\"",[173,345,190],{"class":179},[173,347,348],{"class":193},"\"dark\"",[173,350,197],{"class":179},[173,352,354,357,359],{"class":175,"line":353},9,[173,355,356],{"class":186},"    \"lang\"",[173,358,190],{"class":179},[173,360,361],{"class":193},"\"en\"\n",[173,363,365],{"class":175,"line":364},10,[173,366,367],{"class":179},"  }\n",[173,369,371],{"class":175,"line":370},11,[173,372,221],{"class":179},[15,374,375],{},[22,376,377],{},"JSON5 (trailing commas allowed):",[164,379,381],{"className":229,"code":380,"language":231,"meta":169,"style":169},"{\n  \"items\": [\n    \"apple\",\n    \"banana\",\n    \"orange\",  \u002F\u002F Trailing comma - no problem!\n  ],\n  \"settings\": {\n    \"theme\": \"dark\",\n    \"lang\": \"en\",  \u002F\u002F Trailing comma here too\n  },\n}\n",[143,382,383,387,392,397,402,410,414,419,424,432,437],{"__ignoreMap":169},[173,384,385],{"class":175,"line":176},[173,386,180],{},[173,388,389],{"class":175,"line":183},[173,390,391],{},"  \"items\": [\n",[173,393,394],{"class":175,"line":200},[173,395,396],{},"    \"apple\",\n",[173,398,399],{"class":175,"line":207},[173,400,401],{},"    \"banana\",\n",[173,403,404,407],{"class":175,"line":218},[173,405,406],{},"    \"orange\",",[173,408,409],{},"  \u002F\u002F Trailing comma - no problem!\n",[173,411,412],{"class":175,"line":260},[173,413,330],{},[173,415,416],{"class":175,"line":266},[173,417,418],{},"  \"settings\": {\n",[173,420,421],{"class":175,"line":272},[173,422,423],{},"    \"theme\": \"dark\",\n",[173,425,426,429],{"class":175,"line":353},[173,427,428],{},"    \"lang\": \"en\",",[173,430,431],{},"  \u002F\u002F Trailing comma here too\n",[173,433,434],{"class":175,"line":364},[173,435,436],{},"  },\n",[173,438,439],{"class":175,"line":370},[173,440,221],{},[15,442,443],{},"This is especially helpful when using version control — diffs are cleaner when adding new items.",[10,445,447],{"id":446},"feature-3-unquoted-object-keys","Feature 3: Unquoted Object Keys",[15,449,450],{},"In JSON5, object keys that are valid identifiers don't need quotes.",[15,452,453],{},[22,454,455],{},"JSON:",[164,457,459],{"className":166,"code":458,"language":168,"meta":169,"style":169},"{\n  \"first-name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"age\": 30\n}\n",[143,460,461,465,477,489,499],{"__ignoreMap":169},[173,462,463],{"class":175,"line":176},[173,464,180],{"class":179},[173,466,467,470,472,475],{"class":175,"line":183},[173,468,469],{"class":186},"  \"first-name\"",[173,471,190],{"class":179},[173,473,474],{"class":193},"\"John\"",[173,476,197],{"class":179},[173,478,479,482,484,487],{"class":175,"line":200},[173,480,481],{"class":186},"  \"last_name\"",[173,483,190],{"class":179},[173,485,486],{"class":193},"\"Doe\"",[173,488,197],{"class":179},[173,490,491,494,496],{"class":175,"line":207},[173,492,493],{"class":186},"  \"age\"",[173,495,190],{"class":179},[173,497,498],{"class":186},"30\n",[173,500,501],{"class":175,"line":218},[173,502,221],{"class":179},[15,504,505],{},[22,506,507],{},"JSON5:",[164,509,511],{"className":229,"code":510,"language":231,"meta":169,"style":169},"{\n  firstName: \"John\",\n  last_name: \"Doe\",  \u002F\u002F Underscore is valid in identifiers\n  age: 30  \u002F\u002F No quotes needed for simple keys\n}\n",[143,512,513,517,522,527,532],{"__ignoreMap":169},[173,514,515],{"class":175,"line":176},[173,516,180],{},[173,518,519],{"class":175,"line":183},[173,520,521],{},"  firstName: \"John\",\n",[173,523,524],{"class":175,"line":200},[173,525,526],{},"  last_name: \"Doe\",  \u002F\u002F Underscore is valid in identifiers\n",[173,528,529],{"class":175,"line":207},[173,530,531],{},"  age: 30  \u002F\u002F No quotes needed for simple keys\n",[173,533,534],{"class":175,"line":218},[173,535,221],{},[15,537,538],{},[22,539,540],{},"Rules for unquoted keys:",[542,543,544,551,556],"ul",{},[545,546,547,548],"li",{},"Must start with a letter, underscore, or ",[143,549,550],{},"$",[545,552,553,554],{},"Can contain letters, digits, underscores, or ",[143,555,550],{},[545,557,558],{},"Cannot contain spaces or special characters (use quotes for those)",[164,560,562],{"className":229,"code":561,"language":231,"meta":169,"style":169},"{\n  \u002F\u002F Valid unquoted keys:\n  name: \"test\",\n  _private: true,\n  $element: \"div\",\n  key123: \"value\",\n\n  \u002F\u002F Must be quoted:\n  \"first-name\": \"John\",    \u002F\u002F Hyphen\n  \"user age\": 30,          \u002F\u002F Space\n  \"123key\": \"value\"        \u002F\u002F Starts with digit\n}\n",[143,563,564,568,573,578,583,588,593,599,604,612,620,628],{"__ignoreMap":169},[173,565,566],{"class":175,"line":176},[173,567,180],{},[173,569,570],{"class":175,"line":183},[173,571,572],{},"  \u002F\u002F Valid unquoted keys:\n",[173,574,575],{"class":175,"line":200},[173,576,577],{},"  name: \"test\",\n",[173,579,580],{"class":175,"line":207},[173,581,582],{},"  _private: true,\n",[173,584,585],{"class":175,"line":218},[173,586,587],{},"  $element: \"div\",\n",[173,589,590],{"class":175,"line":260},[173,591,592],{},"  key123: \"value\",\n",[173,594,595],{"class":175,"line":266},[173,596,598],{"emptyLinePlaceholder":597},true,"\n",[173,600,601],{"class":175,"line":272},[173,602,603],{},"  \u002F\u002F Must be quoted:\n",[173,605,606,609],{"class":175,"line":353},[173,607,608],{},"  \"first-name\": \"John\",",[173,610,611],{},"    \u002F\u002F Hyphen\n",[173,613,614,617],{"class":175,"line":364},[173,615,616],{},"  \"user age\": 30,",[173,618,619],{},"          \u002F\u002F Space\n",[173,621,622,625],{"class":175,"line":370},[173,623,624],{},"  \"123key\": \"value\"",[173,626,627],{},"        \u002F\u002F Starts with digit\n",[173,629,631],{"class":175,"line":630},12,[173,632,221],{},[10,634,636],{"id":635},"feature-4-single-quoted-strings","Feature 4: Single-Quoted Strings",[15,638,639],{},"JSON5 allows both single and double quotes for strings.",[15,641,642],{},[22,643,455],{},[164,645,647],{"className":166,"code":646,"language":168,"meta":169,"style":169},"{\n  \"message\": \"Hello \\\"World\\\"\",\n  \"path\": \"C:\\\\Users\\\\Name\"\n}\n",[143,648,649,653,676,697],{"__ignoreMap":169},[173,650,651],{"class":175,"line":176},[173,652,180],{"class":179},[173,654,655,658,660,663,666,669,671,674],{"class":175,"line":183},[173,656,657],{"class":186},"  \"message\"",[173,659,190],{"class":179},[173,661,662],{"class":193},"\"Hello ",[173,664,665],{"class":186},"\\\"",[173,667,668],{"class":193},"World",[173,670,665],{"class":186},[173,672,673],{"class":193},"\"",[173,675,197],{"class":179},[173,677,678,681,683,686,689,692,694],{"class":175,"line":200},[173,679,680],{"class":186},"  \"path\"",[173,682,190],{"class":179},[173,684,685],{"class":193},"\"C:",[173,687,688],{"class":186},"\\\\",[173,690,691],{"class":193},"Users",[173,693,688],{"class":186},[173,695,696],{"class":193},"Name\"\n",[173,698,699],{"class":175,"line":207},[173,700,221],{"class":179},[15,702,703],{},[22,704,507],{},[164,706,708],{"className":229,"code":707,"language":231,"meta":169,"style":169},"{\n  message: 'Hello \"World\"',  \u002F\u002F Single quotes avoid escaping\n  path: 'C:\\\\Users\\\\Name',\n  template: \"Use 'single' inside double\",\n}\n",[143,709,710,714,719,724,729],{"__ignoreMap":169},[173,711,712],{"class":175,"line":176},[173,713,180],{},[173,715,716],{"class":175,"line":183},[173,717,718],{},"  message: 'Hello \"World\"',  \u002F\u002F Single quotes avoid escaping\n",[173,720,721],{"class":175,"line":200},[173,722,723],{},"  path: 'C:\\\\Users\\\\Name',\n",[173,725,726],{"class":175,"line":207},[173,727,728],{},"  template: \"Use 'single' inside double\",\n",[173,730,731],{"class":175,"line":218},[173,732,221],{},[15,734,735],{},"Single quotes are especially useful when your string contains double quotes.",[10,737,739],{"id":738},"feature-5-multiline-strings","Feature 5: Multiline Strings",[15,741,742],{},"JSON5 supports multiline strings using backticks (template literals) or escaped newlines.",[15,744,745],{},[22,746,747],{},"JSON5 with backticks:",[164,749,751],{"className":229,"code":750,"language":231,"meta":169,"style":169},"{\n  description: `This is a\nmultiline string\nthat spans multiple lines.`\n}\n",[143,752,753,757,762,767,772],{"__ignoreMap":169},[173,754,755],{"class":175,"line":176},[173,756,180],{},[173,758,759],{"class":175,"line":183},[173,760,761],{},"  description: `This is a\n",[173,763,764],{"class":175,"line":200},[173,765,766],{},"multiline string\n",[173,768,769],{"class":175,"line":207},[173,770,771],{},"that spans multiple lines.`\n",[173,773,774],{"class":175,"line":218},[173,775,221],{},[15,777,778],{},[22,779,780],{},"JSON5 with escaped newlines (also valid in JSON with \\n, but more readable here):",[164,782,784],{"className":229,"code":783,"language":231,"meta":169,"style":169},"{\n  poem: \"Roses are red,\\nViolets are blue,\\nJSON5 is better,\\nFor me and you.\"\n}\n",[143,785,786,790,795],{"__ignoreMap":169},[173,787,788],{"class":175,"line":176},[173,789,180],{},[173,791,792],{"class":175,"line":183},[173,793,794],{},"  poem: \"Roses are red,\\nViolets are blue,\\nJSON5 is better,\\nFor me and you.\"\n",[173,796,797],{"class":175,"line":200},[173,798,221],{},[10,800,802],{"id":801},"feature-6-enhanced-number-formats","Feature 6: Enhanced Number Formats",[15,804,805],{},"JSON5 supports number formats that are valid in JavaScript but not in JSON.",[164,807,809],{"className":229,"code":808,"language":231,"meta":169,"style":169},"{\n  \u002F\u002F Hexadecimal\n  hexValue: 0xFF,       \u002F\u002F 255\n  hexValue2: 0x1A3,    \u002F\u002F 419\n\n  \u002F\u002F Leading or trailing decimal points\n  float1: .5,          \u002F\u002F Same as 0.5\n  float2: 5.,          \u002F\u002F Same as 5.0\n\n  \u002F\u002F Positive\u002Fnegative signs\n  positive: +10,\n  negative: -10,\n\n  \u002F\u002F Infinity and NaN (in some implementations)\n  \u002F\u002F max: Infinity,\n  \u002F\u002F invalid: NaN\n}\n",[143,810,811,815,820,825,830,834,839,844,849,853,858,863,868,873,879,885,891],{"__ignoreMap":169},[173,812,813],{"class":175,"line":176},[173,814,180],{},[173,816,817],{"class":175,"line":183},[173,818,819],{},"  \u002F\u002F Hexadecimal\n",[173,821,822],{"class":175,"line":200},[173,823,824],{},"  hexValue: 0xFF,       \u002F\u002F 255\n",[173,826,827],{"class":175,"line":207},[173,828,829],{},"  hexValue2: 0x1A3,    \u002F\u002F 419\n",[173,831,832],{"class":175,"line":218},[173,833,598],{"emptyLinePlaceholder":597},[173,835,836],{"class":175,"line":260},[173,837,838],{},"  \u002F\u002F Leading or trailing decimal points\n",[173,840,841],{"class":175,"line":266},[173,842,843],{},"  float1: .5,          \u002F\u002F Same as 0.5\n",[173,845,846],{"class":175,"line":272},[173,847,848],{},"  float2: 5.,          \u002F\u002F Same as 5.0\n",[173,850,851],{"class":175,"line":353},[173,852,598],{"emptyLinePlaceholder":597},[173,854,855],{"class":175,"line":364},[173,856,857],{},"  \u002F\u002F Positive\u002Fnegative signs\n",[173,859,860],{"class":175,"line":370},[173,861,862],{},"  positive: +10,\n",[173,864,865],{"class":175,"line":630},[173,866,867],{},"  negative: -10,\n",[173,869,871],{"class":175,"line":870},13,[173,872,598],{"emptyLinePlaceholder":597},[173,874,876],{"class":175,"line":875},14,[173,877,878],{},"  \u002F\u002F Infinity and NaN (in some implementations)\n",[173,880,882],{"class":175,"line":881},15,[173,883,884],{},"  \u002F\u002F max: Infinity,\n",[173,886,888],{"class":175,"line":887},16,[173,889,890],{},"  \u002F\u002F invalid: NaN\n",[173,892,894],{"class":175,"line":893},17,[173,895,221],{},[15,897,898,901,902,905,906,909,910,909,913,916,917,920],{},[22,899,900],{},"Note:"," While JSON only allows ",[143,903,904],{},"123",", JSON5 also allows ",[143,907,908],{},"+123",", ",[143,911,912],{},"0x1F",[143,914,915],{},".5",", and ",[143,918,919],{},"5.",".",[10,922,924],{"id":923},"real-world-example-configuration-file","Real-World Example: Configuration File",[15,926,927],{},"Here's how JSON5 shines for configuration files:",[15,929,930],{},[22,931,932],{},"JSON (strict, no comments):",[164,934,936],{"className":166,"code":935,"language":168,"meta":169,"style":169},"{\n  \"server\": {\n    \"port\": 3000,\n    \"host\": \"localhost\"\n  },\n  \"database\": {\n    \"url\": \"mongodb:\u002F\u002Flocalhost:27017\u002Fmyapp\",\n    \"options\": {\n      \"useNewUrlParser\": true,\n      \"useUnifiedTopology\": true\n    }\n  },\n  \"logging\": {\n    \"level\": \"info\",\n    \"format\": \"combined\"\n  }\n}\n",[143,937,938,942,949,961,971,975,982,994,1001,1013,1023,1028,1032,1039,1051,1061,1065],{"__ignoreMap":169},[173,939,940],{"class":175,"line":176},[173,941,180],{"class":179},[173,943,944,947],{"class":175,"line":183},[173,945,946],{"class":186},"  \"server\"",[173,948,338],{"class":179},[173,950,951,954,956,959],{"class":175,"line":200},[173,952,953],{"class":186},"    \"port\"",[173,955,190],{"class":179},[173,957,958],{"class":186},"3000",[173,960,197],{"class":179},[173,962,963,966,968],{"class":175,"line":207},[173,964,965],{"class":186},"    \"host\"",[173,967,190],{"class":179},[173,969,970],{"class":193},"\"localhost\"\n",[173,972,973],{"class":175,"line":218},[173,974,436],{"class":179},[173,976,977,980],{"class":175,"line":260},[173,978,979],{"class":186},"  \"database\"",[173,981,338],{"class":179},[173,983,984,987,989,992],{"class":175,"line":266},[173,985,986],{"class":186},"    \"url\"",[173,988,190],{"class":179},[173,990,991],{"class":193},"\"mongodb:\u002F\u002Flocalhost:27017\u002Fmyapp\"",[173,993,197],{"class":179},[173,995,996,999],{"class":175,"line":272},[173,997,998],{"class":186},"    \"options\"",[173,1000,338],{"class":179},[173,1002,1003,1006,1008,1011],{"class":175,"line":353},[173,1004,1005],{"class":186},"      \"useNewUrlParser\"",[173,1007,190],{"class":179},[173,1009,1010],{"class":186},"true",[173,1012,197],{"class":179},[173,1014,1015,1018,1020],{"class":175,"line":364},[173,1016,1017],{"class":186},"      \"useUnifiedTopology\"",[173,1019,190],{"class":179},[173,1021,1022],{"class":186},"true\n",[173,1024,1025],{"class":175,"line":370},[173,1026,1027],{"class":179},"    }\n",[173,1029,1030],{"class":175,"line":630},[173,1031,436],{"class":179},[173,1033,1034,1037],{"class":175,"line":870},[173,1035,1036],{"class":186},"  \"logging\"",[173,1038,338],{"class":179},[173,1040,1041,1044,1046,1049],{"class":175,"line":875},[173,1042,1043],{"class":186},"    \"level\"",[173,1045,190],{"class":179},[173,1047,1048],{"class":193},"\"info\"",[173,1050,197],{"class":179},[173,1052,1053,1056,1058],{"class":175,"line":881},[173,1054,1055],{"class":186},"    \"format\"",[173,1057,190],{"class":179},[173,1059,1060],{"class":193},"\"combined\"\n",[173,1062,1063],{"class":175,"line":887},[173,1064,367],{"class":179},[173,1066,1067],{"class":175,"line":893},[173,1068,221],{"class":179},[15,1070,1071],{},[22,1072,1073],{},"JSON5 (readable, with comments):",[164,1075,1077],{"className":229,"code":1076,"language":231,"meta":169,"style":169},"{\n  \u002F\u002F Server configuration\n  server: {\n    port: 3000,        \u002F\u002F Development port\n    host: 'localhost',\n  },\n\n  \u002F\u002F Database settings\n  database: {\n    url: 'mongodb:\u002F\u002Flocalhost:27017\u002Fmyapp',\n    options: {\n      useNewUrlParser: true,\n      useUnifiedTopology: true,\n      \u002F\u002F Enable debug mode in development\n      debug: false,\n    },\n  },\n\n  \u002F\u002F Logging configuration\n  logging: {\n    level: 'info',\n    format: 'combined',\n    \u002F\u002F outputs: ['console', 'file'],  \u002F\u002F Commented out for now\n  },\n}\n",[143,1078,1079,1083,1088,1093,1098,1103,1107,1111,1116,1121,1126,1131,1136,1141,1146,1151,1156,1160,1165,1171,1177,1183,1189,1198,1203],{"__ignoreMap":169},[173,1080,1081],{"class":175,"line":176},[173,1082,180],{},[173,1084,1085],{"class":175,"line":183},[173,1086,1087],{},"  \u002F\u002F Server configuration\n",[173,1089,1090],{"class":175,"line":200},[173,1091,1092],{},"  server: {\n",[173,1094,1095],{"class":175,"line":207},[173,1096,1097],{},"    port: 3000,        \u002F\u002F Development port\n",[173,1099,1100],{"class":175,"line":218},[173,1101,1102],{},"    host: 'localhost',\n",[173,1104,1105],{"class":175,"line":260},[173,1106,436],{},[173,1108,1109],{"class":175,"line":266},[173,1110,598],{"emptyLinePlaceholder":597},[173,1112,1113],{"class":175,"line":272},[173,1114,1115],{},"  \u002F\u002F Database settings\n",[173,1117,1118],{"class":175,"line":353},[173,1119,1120],{},"  database: {\n",[173,1122,1123],{"class":175,"line":364},[173,1124,1125],{},"    url: 'mongodb:\u002F\u002Flocalhost:27017\u002Fmyapp',\n",[173,1127,1128],{"class":175,"line":370},[173,1129,1130],{},"    options: {\n",[173,1132,1133],{"class":175,"line":630},[173,1134,1135],{},"      useNewUrlParser: true,\n",[173,1137,1138],{"class":175,"line":870},[173,1139,1140],{},"      useUnifiedTopology: true,\n",[173,1142,1143],{"class":175,"line":875},[173,1144,1145],{},"      \u002F\u002F Enable debug mode in development\n",[173,1147,1148],{"class":175,"line":881},[173,1149,1150],{},"      debug: false,\n",[173,1152,1153],{"class":175,"line":887},[173,1154,1155],{},"    },\n",[173,1157,1158],{"class":175,"line":893},[173,1159,436],{},[173,1161,1163],{"class":175,"line":1162},18,[173,1164,598],{"emptyLinePlaceholder":597},[173,1166,1168],{"class":175,"line":1167},19,[173,1169,1170],{},"  \u002F\u002F Logging configuration\n",[173,1172,1174],{"class":175,"line":1173},20,[173,1175,1176],{},"  logging: {\n",[173,1178,1180],{"class":175,"line":1179},21,[173,1181,1182],{},"    level: 'info',\n",[173,1184,1186],{"class":175,"line":1185},22,[173,1187,1188],{},"    format: 'combined',\n",[173,1190,1192,1195],{"class":175,"line":1191},23,[173,1193,1194],{},"    \u002F\u002F outputs: ['console', 'file'],",[173,1196,1197],{},"  \u002F\u002F Commented out for now\n",[173,1199,1201],{"class":175,"line":1200},24,[173,1202,436],{},[173,1204,1206],{"class":175,"line":1205},25,[173,1207,221],{},[10,1209,1211],{"id":1210},"when-to-use-json5","When to Use JSON5",[1213,1214,1216],"h3",{"id":1215},"good-use-cases","✅ Good Use Cases",[1218,1219,1220,1235,1241,1247,1253],"ol",{},[545,1221,1222,1225,1226,909,1229,909,1232],{},[22,1223,1224],{},"Configuration Files"," — ",[143,1227,1228],{},".eslintrc.json5",[143,1230,1231],{},".babelrc.json5",[143,1233,1234],{},"tsconfig.json5",[545,1236,1237,1240],{},[22,1238,1239],{},"Human-Edited Data"," — When non-programmers need to edit the file",[545,1242,1243,1246],{},[22,1244,1245],{},"Development Tools"," — Build configs, linter rules, task definitions",[545,1248,1249,1252],{},[22,1250,1251],{},"Documentation Examples"," — Code samples with explanatory comments",[545,1254,1255,1258],{},[22,1256,1257],{},"Prototyping"," — Quick data structures during development",[1213,1260,1262],{"id":1261},"when-not-to-use-json5","❌ When NOT to Use JSON5",[1218,1264,1265,1271,1277,1283,1289],{},[545,1266,1267,1270],{},[22,1268,1269],{},"API Requests\u002FResponses"," — Stick to standard JSON for interoperability",[545,1272,1273,1276],{},[22,1274,1275],{},"Data Exchange"," — Third-party integrations expect standard JSON",[545,1278,1279,1282],{},[22,1280,1281],{},"Database Storage"," — Most databases expect standard JSON",[545,1284,1285,1288],{},[22,1286,1287],{},"Public-Facing Formats"," — If external systems consume your data",[545,1290,1291,1294],{},[22,1292,1293],{},"Strict Validation Environments"," — When schema validation expects JSON",[10,1296,1298],{"id":1297},"using-json5-in-your-project","Using JSON5 in Your Project",[1213,1300,1302],{"id":1301},"javascriptnodejs","JavaScript\u002FNode.js",[164,1304,1308],{"className":1305,"code":1306,"language":1307,"meta":169,"style":169},"language-bash shiki shiki-themes github-light github-dark","npm install json5\n","bash",[143,1309,1310],{"__ignoreMap":169},[173,1311,1312,1316,1319],{"class":175,"line":176},[173,1313,1315],{"class":1314},"sScJk","npm",[173,1317,1318],{"class":193}," install",[173,1320,1321],{"class":193}," json5\n",[164,1323,1327],{"className":1324,"code":1325,"language":1326,"meta":169,"style":169},"language-javascript shiki shiki-themes github-light github-dark","const JSON5 = require('json5');\n\n\u002F\u002F Parsing JSON5\nconst config = JSON5.parse(`\n  \u002F\u002F Configuration\n  server: {\n    port: 3000,\n  }\n`);\n\n\u002F\u002F Stringifying to JSON5\nconst output = JSON5.stringify({ x: 1, y: 2 }, null, 2);\n","javascript",[143,1328,1329,1353,1357,1362,1383,1388,1392,1397,1401,1408,1412,1417],{"__ignoreMap":169},[173,1330,1331,1335,1338,1341,1344,1347,1350],{"class":175,"line":176},[173,1332,1334],{"class":1333},"szBVR","const",[173,1336,1337],{"class":186}," JSON5",[173,1339,1340],{"class":1333}," =",[173,1342,1343],{"class":1314}," require",[173,1345,1346],{"class":179},"(",[173,1348,1349],{"class":193},"'json5'",[173,1351,1352],{"class":179},");\n",[173,1354,1355],{"class":175,"line":183},[173,1356,598],{"emptyLinePlaceholder":597},[173,1358,1359],{"class":175,"line":200},[173,1360,1361],{"class":203},"\u002F\u002F Parsing JSON5\n",[173,1363,1364,1366,1369,1371,1373,1375,1378,1380],{"class":175,"line":207},[173,1365,1334],{"class":1333},[173,1367,1368],{"class":186}," config",[173,1370,1340],{"class":1333},[173,1372,1337],{"class":186},[173,1374,920],{"class":179},[173,1376,1377],{"class":1314},"parse",[173,1379,1346],{"class":179},[173,1381,1382],{"class":193},"`\n",[173,1384,1385],{"class":175,"line":218},[173,1386,1387],{"class":193},"  \u002F\u002F Configuration\n",[173,1389,1390],{"class":175,"line":260},[173,1391,1092],{"class":193},[173,1393,1394],{"class":175,"line":266},[173,1395,1396],{"class":193},"    port: 3000,\n",[173,1398,1399],{"class":175,"line":272},[173,1400,367],{"class":193},[173,1402,1403,1406],{"class":175,"line":353},[173,1404,1405],{"class":193},"`",[173,1407,1352],{"class":179},[173,1409,1410],{"class":175,"line":364},[173,1411,598],{"emptyLinePlaceholder":597},[173,1413,1414],{"class":175,"line":370},[173,1415,1416],{"class":203},"\u002F\u002F Stringifying to JSON5\n",[173,1418,1419,1421,1424,1426,1428,1430,1433,1436,1439,1442,1445,1448,1451,1453,1455],{"class":175,"line":630},[173,1420,1334],{"class":1333},[173,1422,1423],{"class":186}," output",[173,1425,1340],{"class":1333},[173,1427,1337],{"class":186},[173,1429,920],{"class":179},[173,1431,1432],{"class":1314},"stringify",[173,1434,1435],{"class":179},"({ x: ",[173,1437,1438],{"class":186},"1",[173,1440,1441],{"class":179},", y: ",[173,1443,1444],{"class":186},"2",[173,1446,1447],{"class":179}," }, ",[173,1449,1450],{"class":186},"null",[173,1452,909],{"class":179},[173,1454,1444],{"class":186},[173,1456,1352],{"class":179},[1213,1458,1460],{"id":1459},"build-tools-integration","Build Tools Integration",[15,1462,1463],{},"Many tools support JSON5 natively or via plugins:",[542,1465,1466,1478,1486],{},[545,1467,1468,190,1471,1473,1474,1477],{},[22,1469,1470],{},"ESLint",[143,1472,1228],{}," (with ",[143,1475,1476],{},"--config"," flag)",[545,1479,1480,190,1483],{},[22,1481,1482],{},"PostCSS",[143,1484,1485],{},"postcss.config.json5",[545,1487,1488,1491,1492,1494],{},[22,1489,1490],{},"Babel",": via ",[143,1493,231],{}," package in config files",[10,1496,1498],{"id":1497},"browser-support","Browser Support",[15,1500,1501],{},"JSON5 is not natively supported in browsers — you need to parse it with a library:",[164,1503,1507],{"className":1504,"code":1505,"language":1506,"meta":169,"style":169},"language-html shiki shiki-themes github-light github-dark","\u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Fjson5@2\u002Fdist\u002Findex.min.js\">\u003C\u002Fscript>\n\u003Cscript>\n  const data = JSON5.parse('{ key: \"value\" }');\n  console.log(data);\n\u003C\u002Fscript>\n","html",[143,1508,1509,1535,1543,1566,1577],{"__ignoreMap":169},[173,1510,1511,1514,1518,1521,1524,1527,1530,1532],{"class":175,"line":176},[173,1512,1513],{"class":179},"\u003C",[173,1515,1517],{"class":1516},"s9eBZ","script",[173,1519,1520],{"class":1314}," src",[173,1522,1523],{"class":179},"=",[173,1525,1526],{"class":193},"\"https:\u002F\u002Funpkg.com\u002Fjson5@2\u002Fdist\u002Findex.min.js\"",[173,1528,1529],{"class":179},">\u003C\u002F",[173,1531,1517],{"class":1516},[173,1533,1534],{"class":179},">\n",[173,1536,1537,1539,1541],{"class":175,"line":183},[173,1538,1513],{"class":179},[173,1540,1517],{"class":1516},[173,1542,1534],{"class":179},[173,1544,1545,1548,1551,1553,1555,1557,1559,1561,1564],{"class":175,"line":200},[173,1546,1547],{"class":1333},"  const",[173,1549,1550],{"class":186}," data",[173,1552,1340],{"class":1333},[173,1554,1337],{"class":186},[173,1556,920],{"class":179},[173,1558,1377],{"class":1314},[173,1560,1346],{"class":179},[173,1562,1563],{"class":193},"'{ key: \"value\" }'",[173,1565,1352],{"class":179},[173,1567,1568,1571,1574],{"class":175,"line":207},[173,1569,1570],{"class":179},"  console.",[173,1572,1573],{"class":1314},"log",[173,1575,1576],{"class":179},"(data);\n",[173,1578,1579,1582,1584],{"class":175,"line":218},[173,1580,1581],{"class":179},"\u003C\u002F",[173,1583,1517],{"class":1516},[173,1585,1534],{"class":179},[10,1587,1589],{"id":1588},"migration-from-json-to-json5","Migration from JSON to JSON5",[15,1591,1592],{},"Converting is straightforward — JSON is valid JSON5:",[1218,1594,1595,1603,1606,1609,1612],{},[545,1596,1597,1598,1600,1601],{},"Rename your file from ",[143,1599,145],{}," to ",[143,1602,150],{},[545,1604,1605],{},"Add comments where helpful",[545,1607,1608],{},"Remove unnecessary quotes from keys",[545,1610,1611],{},"Add trailing commas for easier editing",[545,1613,1614],{},"Use single quotes where convenient",[10,1616,1618],{"id":1617},"summary","Summary",[15,1620,1621],{},"JSON5 brings developer-friendly features to the JSON format:",[34,1623,1624,1633],{},[37,1625,1626],{},[40,1627,1628,1630],{},[43,1629,45],{},[43,1631,1632],{},"Benefit",[53,1634,1635,1642,1650,1658,1666,1674],{},[40,1636,1637,1639],{},[58,1638,62],{},[58,1640,1641],{},"Document your configs",[40,1643,1644,1647],{},[58,1645,1646],{},"Trailing commas",[58,1648,1649],{},"Easier editing, cleaner diffs",[40,1651,1652,1655],{},[58,1653,1654],{},"Unquoted keys",[58,1656,1657],{},"Less typing, cleaner look",[40,1659,1660,1663],{},[58,1661,1662],{},"Single quotes",[58,1664,1665],{},"Avoid escape hell",[40,1667,1668,1671],{},[58,1669,1670],{},"Multiline strings",[58,1672,1673],{},"Better readability",[40,1675,1676,1679],{},[58,1677,1678],{},"Enhanced numbers",[58,1680,1681],{},"Hex, leading dots",[15,1683,1684,1687],{},[22,1685,1686],{},"Bottom line:"," Use JSON5 for human-maintained files (configs, settings), but stick to standard JSON for data interchange (APIs, databases, third-party integrations).",[10,1689,1691],{"id":1690},"related-tools","Related Tools",[542,1693,1694],{},[545,1695,1696,1701],{},[1697,1698,1700],"a",{"href":1699},"\u002Ftools\u002Fjson-formatter","JSON Formatter"," — Format and validate standard JSON",[1703,1704,1705],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":169,"searchDepth":183,"depth":183,"links":1707},[1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1721,1725,1726,1727,1728],{"id":12,"depth":183,"text":13},{"id":31,"depth":183,"text":32},{"id":153,"depth":183,"text":154},{"id":280,"depth":183,"text":281},{"id":446,"depth":183,"text":447},{"id":635,"depth":183,"text":636},{"id":738,"depth":183,"text":739},{"id":801,"depth":183,"text":802},{"id":923,"depth":183,"text":924},{"id":1210,"depth":183,"text":1211,"children":1718},[1719,1720],{"id":1215,"depth":200,"text":1216},{"id":1261,"depth":200,"text":1262},{"id":1297,"depth":183,"text":1298,"children":1722},[1723,1724],{"id":1301,"depth":200,"text":1302},{"id":1459,"depth":200,"text":1460},{"id":1497,"depth":183,"text":1498},{"id":1588,"depth":183,"text":1589},{"id":1617,"depth":183,"text":1618},{"id":1690,"depth":183,"text":1691},"2026-05-26","Discover JSON5 features: comments, trailing commas, unquoted keys, multiline strings. Compare with JSON and learn when to use JSON5 in your projects.","md",{"immutable":597},"\u002Fguides\u002Fjson5-introduction",{"title":5,"description":1730},"guides\u002Fjson5-introduction","Jpagp_dlLFbq8AJ8E181y1xZsEomIioF7WxJNKzhwyg",1780401324080]