[{"data":1,"prerenderedAt":972},["ShallowReactive",2],{"blog-post-en-what-is-json":3,"surround-\u002Fen\u002Fblog\u002Fwhat-is-json":965},{"id":4,"title":5,"author":6,"body":7,"category":941,"date":942,"description":943,"draft":944,"extension":945,"h1":946,"image":947,"lastmod":942,"locales":948,"meta":951,"navigation":952,"path":953,"promo":954,"seo":957,"stem":958,"tags":959,"__hash__":964},"blog\u002Fen\u002Fblog\u002Fwhat-is-json.md","What Is JSON? Structure, Syntax, and Common Mistakes (2026 Developer Guide)","JSON Toolbox Team",{"type":8,"value":9,"toc":907},"minimark",[10,32,37,40,74,77,81,84,138,155,159,164,174,177,202,206,212,215,219,225,235,239,242,263,269,272,284,290,294,319,325,329,335,339,342,346,349,355,358,366,369,375,381,385,387,393,396,402,405,412,414,420,426,431,435,437,443,445,451,453,460,463,468,476,483,485,491,493,500,502,508,516,520,522,528,530,536,538,545,547,553,559,567,571,574,586,588,595,606,609,632,635,648,652,656,659,670,673,683,687,695,698,702,705,711,714,728,732,735,807,813,817,880,889,893],[11,12,13,14,18,19,22,23,26,27,31],"p",{},"JSON (JavaScript Object Notation) is a lightweight data interchange format that appears in almost every modern web development and API design scenario: from browser–backend communication to configuration files like ",[15,16,17],"code",{},"package.json"," and ",[15,20,21],{},"tsconfig.json",", and even structured logs and message queues.",[24,25],"br",{},"\nInstead of a textbook-style introduction, this guide focuses on ",[28,29,30],"strong",{},"real-world developer scenarios",", explaining JSON structure and syntax while diving deep into the mistakes you're most likely to encounter and how to debug them.",[33,34,36],"h2",{"id":35},"why-developers-must-understand-json","Why Developers Must Understand JSON",[11,38,39],{},"In modern web development, JSON is everywhere:",[41,42,43,50,62,68],"ul",{},[44,45,46,49],"li",{},[28,47,48],{},"Frontend–backend communication",": RESTful APIs and most GraphQL services use JSON for request\u002Fresponse bodies.",[44,51,52,55,56,58,59,61],{},[28,53,54],{},"Configuration files",": ",[15,57,17],{}," in Node.js projects, ",[15,60,21],{}," in TypeScript, and many other config files are JSON or JSON supersets.",[44,63,64,67],{},[28,65,66],{},"Logging and monitoring",": Many logging systems (e.g., ELK, Cloudflare Logs) store structured logs in JSON format.",[44,69,70,73],{},[28,71,72],{},"Third-party integrations",": Payment, SMS, email, analytics SDKs typically return or accept JSON.",[11,75,76],{},"Not understanding JSON's strict syntax rules can waste a lot of time when debugging APIs, parsing responses, or handling configuration.",[33,78,80],{"id":79},"json-data-types-more-than-just-objects-and-arrays","JSON Data Types: More Than Just \"Objects and Arrays\"",[11,82,83],{},"JSON supports only a limited set of data types, which is why it's simple and easy to parse:",[41,85,86,96,105,114,120,132],{},[44,87,88,91,92,95],{},[28,89,90],{},"Object",": A collection of key–value pairs, wrapped in ",[15,93,94],{},"{}",".",[44,97,98,101,102,95],{},[28,99,100],{},"Array",": An ordered list, wrapped in ",[15,103,104],{},"[]",[44,106,107,110,111,95],{},[28,108,109],{},"String",": Must be wrapped in double quotes ",[15,112,113],{},"\"",[44,115,116,119],{},[28,117,118],{},"Number",": Integer or floating-point; hexadecimal and octal are not allowed.",[44,121,122,55,125,128,129,95],{},[28,123,124],{},"Boolean",[15,126,127],{},"true"," or ",[15,130,131],{},"false",[44,133,134,137],{},[28,135,136],{},"Null",": Represents \"no value\".",[11,139,140,141,144,145,148,149,151,152,95],{},"JSON does ",[28,142,143],{},"not"," support functions, Date objects, regular expressions, ",[15,146,147],{},"undefined",", comments, etc.",[24,150],{},"\nIn real projects, dates are usually represented as ISO 8601 strings, e.g. ",[15,153,154],{},"\"2026-08-23T08:00:00Z\"",[33,156,158],{"id":157},"what-does-json-look-like-in-real-apis","What Does JSON Look Like in Real APIs?",[160,161,163],"h3",{"id":162},"typical-rest-api-response","Typical REST API Response",[165,166,172],"pre",{"className":167,"code":169,"language":170,"meta":171},[168],"language-json","{\n  \"success\": true,\n  \"data\": {\n    \"id\": 12345,\n    \"name\": \"Alice\",\n    \"email\": \"alice@example.com\",\n    \"roles\": [\"user\", \"editor\"],\n    \"createdAt\": \"2026-08-23T08:00:00Z\"\n  },\n  \"meta\": {\n    \"requestId\": \"req_abc123\",\n    \"version\": \"v1\"\n  }\n}\n","json","",[15,173,169],{"__ignoreMap":171},[11,175,176],{},"Characteristics:",[41,178,179,193,196],{},[44,180,181,182,185,186,185,189,192],{},"The top level is an object, making it easy to extend (",[15,183,184],{},"success",", ",[15,187,188],{},"data",[15,190,191],{},"meta",", etc.).",[44,194,195],{},"Nested objects and arrays express complex structures.",[44,197,198,199,95],{},"Dates are represented as strings, not ",[15,200,201],{},"new Date()",[160,203,205],{"id":204},"list-endpoint-paginated","List Endpoint (Paginated)",[165,207,210],{"className":208,"code":209,"language":170,"meta":171},[168],"{\n  \"success\": true,\n  \"data\": [\n    { \"id\": 1, \"title\": \"JSON Guide\" },\n    { \"id\": 2, \"title\": \"API Design Tips\" }\n  ],\n  \"pagination\": {\n    \"page\": 1,\n    \"pageSize\": 20,\n    \"total\": 58\n  }\n}\n",[15,211,209],{"__ignoreMap":171},[11,213,214],{},"This pattern is very common in admin dashboards and content listings.",[160,216,218],{"id":217},"error-response-often-overlooked","Error Response (Often Overlooked)",[165,220,223],{"className":221,"code":222,"language":170,"meta":171},[168],"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"INVALID_JSON\",\n    \"message\": \"Unexpected token ':' in JSON at position 3\",\n    \"details\": {\n      \"line\": 2,\n      \"column\": 5\n    }\n  }\n}\n",[15,224,222],{"__ignoreMap":171},[11,226,227,228,231,232,234],{},"When the backend fails to validate JSON, it often returns a structure like this. If the frontend blindly calls ",[15,229,230],{},"JSON.parse"," on the raw response without checking the ",[15,233,184],{}," field, it can easily mishandle errors.",[33,236,238],{"id":237},"json-syntax-rules-from-it-runs-to-strictly-correct","JSON Syntax Rules: From \"It Runs\" to \"Strictly Correct\"",[160,240,90],{"id":241},"object",[41,243,244,249,256],{},[44,245,246,247,95],{},"Wrapped in ",[15,248,94],{},[44,250,251,252,255],{},"Contains zero or more ",[15,253,254],{},"\"key\": value"," pairs, separated by commas.",[44,257,258,259,262],{},"Keys ",[28,260,261],{},"must"," be double-quoted strings.",[165,264,267],{"className":265,"code":266,"language":170,"meta":171},[168],"{\n  \"id\": 123,\n  \"name\": \"JSON Guide\",\n  \"active\": true,\n  \"meta\": null\n}\n",[15,268,266],{"__ignoreMap":171},[160,270,100],{"id":271},"array",[41,273,274,278,281],{},[44,275,246,276,95],{},[15,277,104],{},[44,279,280],{},"Contains zero or more values, separated by commas.",[44,282,283],{},"Values can be any valid JSON value, and types can be mixed.",[165,285,288],{"className":286,"code":287,"language":170,"meta":171},[168],"[\n  \"apple\",\n  42,\n  true,\n  { \"key\": \"value\" },\n[1][2][3]\n]\n",[15,289,287],{"__ignoreMap":171},[160,291,293],{"id":292},"strings-and-escaping","Strings and Escaping",[41,295,296,301],{},[44,297,298,299,95],{},"Must use double quotes ",[15,300,113],{},[44,302,303,304,185,307,185,310,185,313,185,316,95],{},"Common escapes: ",[15,305,306],{},"\\\"",[15,308,309],{},"\\\\",[15,311,312],{},"\\n",[15,314,315],{},"\\t",[15,317,318],{},"\\uXXXX",[165,320,323],{"className":321,"code":322,"language":170,"meta":171},[168],"{\n  \"message\": \"He said \\\"hello\\\"\",\n  \"path\": \"C:\\\\Users\\\\Alice\",\n  \"multiline\": \"Line1\\nLine2\"\n}\n",[15,324,322],{"__ignoreMap":171},[160,326,328],{"id":327},"numbers-booleans-and-null","Numbers, Booleans, and Null",[165,330,333],{"className":331,"code":332,"language":170,"meta":171},[168],"{\n  \"int\": 10,\n  \"float\": 3.14,\n  \"negative\": -0.5,\n  \"exp\": 1.23e10,\n  \"enabled\": true,\n  \"deleted\": false,\n  \"optional\": null\n}\n",[15,334,332],{"__ignoreMap":171},[33,336,338],{"id":337},"common-json-mistakes-from-error-messages-to-fixes","Common JSON Mistakes: From Error Messages to Fixes",[11,340,341],{},"Below are the most common JSON mistakes in real development, along with typical error messages and debugging strategies.",[160,343,345],{"id":344},"using-single-quotes-or-unquoted-keys","Using Single Quotes or Unquoted Keys",[11,347,348],{},"Invalid:",[165,350,353],{"className":351,"code":352,"language":170,"meta":171},[168],"{\n  'name': 'Alice',\n  name: \"Alice\"\n}\n",[15,354,352],{"__ignoreMap":171},[11,356,357],{},"Typical error (browser \u002F Node.js):",[359,360,361],"blockquote",{},[11,362,363],{},[15,364,365],{},"SyntaxError: Unexpected token ':' in JSON at position 1",[11,367,368],{},"Fix:",[165,370,373],{"className":371,"code":372,"language":170,"meta":171},[168],"{\n  \"name\": \"Alice\"\n}\n",[15,374,372],{"__ignoreMap":171},[11,376,377,380],{},[28,378,379],{},"Key point",": All strings in JSON, including keys, must be double-quoted.",[160,382,384],{"id":383},"trailing-commas","Trailing Commas",[11,386,348],{},[165,388,391],{"className":389,"code":390,"language":170,"meta":171},[168],"{\n  \"name\": \"Alice\",\n  \"age\": 30,\n}\n",[15,392,390],{"__ignoreMap":171},[11,394,395],{},"or:",[165,397,400],{"className":398,"code":399,"language":170,"meta":171},[168],"[1, 2, 3,]\n",[15,401,399],{"__ignoreMap":171},[11,403,404],{},"Typical error:",[359,406,407],{},[11,408,409],{},[15,410,411],{},"SyntaxError: Unexpected token '}' in JSON at position 27",[11,413,368],{},[165,415,418],{"className":416,"code":417,"language":170,"meta":171},[168],"{\n  \"name\": \"Alice\",\n  \"age\": 30\n}\n",[15,419,417],{"__ignoreMap":171},[165,421,424],{"className":422,"code":423,"language":170,"meta":171},[168],"[1][2][3]\n",[15,425,423],{"__ignoreMap":171},[11,427,428,430],{},[28,429,379],{},": JSON does not allow trailing commas after the last element.",[160,432,434],{"id":433},"writing-comments-in-json","Writing Comments in JSON",[11,436,348],{},[165,438,441],{"className":439,"code":440,"language":170,"meta":171},[168],"{\n  \u002F\u002F User info\n  \"name\": \"Alice\",\n  \"age\": 30\n}\n",[15,442,440],{"__ignoreMap":171},[11,444,395],{},[165,446,449],{"className":447,"code":448,"language":170,"meta":171},[168],"{\n  \"name\": \"Alice\", \u002F* age *\u002F \"age\": 30\n}\n",[15,450,448],{"__ignoreMap":171},[11,452,404],{},[359,454,455],{},[11,456,457],{},[15,458,459],{},"SyntaxError: Unexpected token '\u002F' in JSON at position 2",[11,461,462],{},"Fix: Remove all comments.",[165,464,466],{"className":465,"code":417,"language":170,"meta":171},[168],[15,467,417],{"__ignoreMap":171},[11,469,470,472,473,475],{},[28,471,379],{},": Standard JSON does not support any form of comments.",[24,474],{},"\nIf you really need \"config with comments\", consider JSONC or YAML, but they are not standard JSON.",[160,477,479,480,482],{"id":478},"using-invalid-values-undefined-functions-date-objects-etc","Using Invalid Values: ",[15,481,147],{},", Functions, Date Objects, etc.",[11,484,348],{},[165,486,489],{"className":487,"code":488,"language":170,"meta":171},[168],"{\n  \"name\": \"Alice\",\n  \"created\": undefined,\n  \"handler\": function() {},\n  \"date\": new Date()\n}\n",[15,490,488],{"__ignoreMap":171},[11,492,404],{},[359,494,495],{},[11,496,497],{},[15,498,499],{},"SyntaxError: Unexpected token 'u' in JSON at position 20",[11,501,368],{},[165,503,506],{"className":504,"code":505,"language":170,"meta":171},[168],"{\n  \"name\": \"Alice\",\n  \"created\": null,\n  \"handler\": null,\n  \"date\": \"2026-08-23T08:00:00Z\"\n}\n",[15,507,505],{"__ignoreMap":171},[11,509,510,512,513,95],{},[28,511,379],{},": JSON only supports objects, arrays, strings, numbers, booleans, and ",[15,514,515],{},"null",[160,517,519],{"id":518},"unescaped-quotes-or-newlines-in-strings","Unescaped Quotes or Newlines in Strings",[11,521,348],{},[165,523,526],{"className":524,"code":525,"language":170,"meta":171},[168],"{\n  \"message\": \"He said \"hello\"\"\n}\n",[15,527,525],{"__ignoreMap":171},[11,529,395],{},[165,531,534],{"className":532,"code":533,"language":170,"meta":171},[168],"{\n  \"text\": \"Line1\nLine2\"\n}\n",[15,535,533],{"__ignoreMap":171},[11,537,404],{},[359,539,540],{},[11,541,542],{},[15,543,544],{},"SyntaxError: Unexpected token 'h' in JSON at position 15",[11,546,368],{},[165,548,551],{"className":549,"code":550,"language":170,"meta":171},[168],"{\n  \"message\": \"He said \\\"hello\\\"\"\n}\n",[15,552,550],{"__ignoreMap":171},[165,554,557],{"className":555,"code":556,"language":170,"meta":171},[168],"{\n  \"text\": \"Line1\\nLine2\"\n}\n",[15,558,556],{"__ignoreMap":171},[11,560,561,563,564,566],{},[28,562,379],{},": Double quotes inside strings must be escaped as ",[15,565,306],{},", and control characters like newlines must use escape sequences.",[160,568,570],{"id":569},"parsing-an-html-error-page-as-json","Parsing an HTML Error Page as JSON",[11,572,573],{},"Real-world scenario:",[41,575,576,579],{},[44,577,578],{},"The server returns 500\u002F404 with an HTML error page as the body, not JSON.",[44,580,581,582,585],{},"The frontend still calls ",[15,583,584],{},"JSON.parse(responseText)"," and fails.",[11,587,404],{},[359,589,590],{},[11,591,592],{},[15,593,594],{},"SyntaxError: Unexpected token '\u003C' in JSON at position 0",[11,596,597,598,601,602,605],{},"Reason: HTML starts with ",[15,599,600],{},"\u003C"," (e.g. ",[15,603,604],{},"\u003C!DOCTYPE html>","), which is not valid JSON.",[11,607,608],{},"Debugging steps:",[610,611,612,619,629],"ol",{},[44,613,614,615,618],{},"Open the browser's Network panel and inspect the ",[28,616,617],{},"Response"," of the request.",[44,620,621,622,625,626,95],{},"Check whether the ",[15,623,624],{},"Content-Type"," is ",[15,627,628],{},"application\u002Fjson",[44,630,631],{},"Verify that the status code is 2xx and that the body is actual JSON.",[11,633,634],{},"Solutions:",[41,636,637,643],{},[44,638,639,640,642],{},"Before parsing, check ",[15,641,624],{}," and the status code.",[44,644,645,646,95],{},"For non-2xx responses, prioritize reading error information instead of directly calling ",[15,647,230],{},[33,649,651],{"id":650},"how-to-quickly-check-if-json-is-valid","How to Quickly Check if JSON Is Valid?",[160,653,655],{"id":654},"using-online-json-validation-and-formatting-tools","Using Online JSON Validation and Formatting Tools",[11,657,658],{},"Paste your JSON into an online tool to:",[41,660,661,664,667],{},[44,662,663],{},"Automatically check syntax errors and highlight the error location (line\u002Fcolumn).",[44,665,666],{},"One-click formatting (indentation, newlines) for easier reading and debugging.",[44,668,669],{},"Support minification to reduce payload size.",[11,671,672],{},"If you're using our tool site, you can paste any JSON directly into the JSON Editor on the homepage to instantly validate and format it.",[359,674,675],{},[11,676,677,678],{},"🚀 Skip straight to formatting\u002Fvalidating your JSON: ",[679,680,682],"a",{"href":681},"\u002F","Open JSON Editor",[160,684,686],{"id":685},"quick-validation-in-the-browser-console","Quick Validation in the Browser Console",[165,688,693],{"className":689,"code":691,"language":692,"meta":171},[690],"language-js","const text = `your JSON string`;\nJSON.parse(text);\n","js",[15,694,691],{"__ignoreMap":171},[11,696,697],{},"If there's a syntax error, an exception will be thrown, and the console will show the error message and approximate location.",[160,699,701],{"id":700},"safe-parsing-in-code","Safe Parsing in Code",[11,703,704],{},"In Node.js \u002F frontend:",[165,706,709],{"className":707,"code":708,"language":692,"meta":171},[690],"try {\n  const data = JSON.parse(text);\n  \u002F\u002F Valid JSON, continue processing\n} catch (e) {\n  \u002F\u002F Invalid JSON\n  console.error('JSON parse failed:', e.message);\n}\n",[15,710,708],{"__ignoreMap":171},[11,712,713],{},"In production, it's recommended to:",[41,715,716,722,725],{},[44,717,718,719,721],{},"Avoid directly calling ",[15,720,230],{}," on user input or untrusted sources.",[44,723,724],{},"Apply length limits and character whitelists before parsing.",[44,726,727],{},"Validate the resulting data structure against a schema (e.g., JSON Schema, Zod, Joi).",[33,729,731],{"id":730},"differences-between-json-and-javascript-object-literals","Differences Between JSON and JavaScript Object Literals",[11,733,734],{},"Many people confuse JSON with JavaScript object literals, but they are not the same:",[41,736,737,757,775,794],{},[44,738,739,742],{},[28,740,741],{},"Key quotes",[41,743,744,751],{},[44,745,746,747,750],{},"JS: ",[15,748,749],{},"{ name: \"Alice\" }"," is valid",[44,752,753,754],{},"JSON: Must be written as ",[15,755,756],{},"{ \"name\": \"Alice\" }",[44,758,759,762],{},[28,760,761],{},"Value types",[41,763,764,770],{},[44,765,766,767,769],{},"JS: Can include functions, dates, regular expressions, ",[15,768,147],{},", etc.",[44,771,772,773],{},"JSON: Only objects, arrays, strings, numbers, booleans, and ",[15,774,515],{},[44,776,777,780],{},[28,778,779],{},"Comments",[41,781,782,791],{},[44,783,784,785,18,788],{},"JS: Supports ",[15,786,787],{},"\u002F\u002F",[15,789,790],{},"\u002F* *\u002F",[44,792,793],{},"JSON: Does not support any comments",[44,795,796,799],{},[28,797,798],{},"Quote style",[41,800,801,804],{},[44,802,803],{},"JS: Strings can use single or double quotes",[44,805,806],{},"JSON: Only double quotes are allowed",[11,808,809,810,95],{},"Therefore, you cannot simply treat a JS object as JSON and send it to the backend; you need to serialize it using ",[15,811,812],{},"JSON.stringify()",[33,814,816],{"id":815},"practical-tips-how-to-use-json-effectively-in-your-projects","Practical Tips: How to Use JSON Effectively in Your Projects?",[610,818,819,844,863],{},[44,820,821,824],{},[28,822,823],{},"API Design Phase",[41,825,826,838,841],{},[44,827,828,829,831,832,831,834,837],{},"Standardize response structures (e.g., ",[15,830,184],{}," + ",[15,833,188],{},[15,835,836],{},"error",").",[44,839,840],{},"Specify that dates and times use ISO 8601 strings.",[44,842,843],{},"Avoid returning sensitive information in JSON (keys, internal IDs, debug info).",[44,845,846,849],{},[28,847,848],{},"Frontend Handling",[41,850,851,857,860],{},[44,852,853,854,856],{},"Check ",[15,855,624],{}," and status codes before parsing.",[44,858,859],{},"Paginate or lazy-load large JSON to avoid parsing huge payloads at once.",[44,861,862],{},"Use TypeScript or JSON Schema to enforce type constraints on API data structures.",[44,864,865,868],{},[28,866,867],{},"Debugging and Troubleshooting",[41,869,870,877],{},[44,871,872,873,876],{},"When encountering a ",[15,874,875],{},"SyntaxError",", first format the JSON with a tool, then locate the error line based on the hint.",[44,878,879],{},"Be cautious with \"strings that look like JSON\", especially those copied from logs or third-party documentation.",[359,881,882],{},[11,883,884,885,888],{},"If you frequently need to check and format JSON, bookmark our ",[679,886,887],{"href":681},"JSON Editor"," to quickly validate any JSON snippet.",[33,890,892],{"id":891},"summary","Summary",[41,894,895,898,901,904],{},[44,896,897],{},"JSON is one of the most fundamental and important data formats in modern web development; understanding its strict syntax can significantly reduce API debugging time.",[44,899,900],{},"Common mistakes often come from \"writing like JavaScript objects\" instead of \"following the JSON spec strictly\": single quotes, trailing commas, comments, invalid values, etc.",[44,902,903],{},"In real projects, you need to consider API design, frontend parsing, and error handling together, not just the \"syntax level\".",[44,905,906],{},"Combining online JSON tools (formatting, validation, minification) can greatly improve development efficiency and also bring continuous search traffic and usage scenarios to your site.",{"title":171,"searchDepth":908,"depth":908,"links":909},2,[910,911,912,918,924,933,938,939,940],{"id":35,"depth":908,"text":36},{"id":79,"depth":908,"text":80},{"id":157,"depth":908,"text":158,"children":913},[914,916,917],{"id":162,"depth":915,"text":163},3,{"id":204,"depth":915,"text":205},{"id":217,"depth":915,"text":218},{"id":237,"depth":908,"text":238,"children":919},[920,921,922,923],{"id":241,"depth":915,"text":90},{"id":271,"depth":915,"text":100},{"id":292,"depth":915,"text":293},{"id":327,"depth":915,"text":328},{"id":337,"depth":908,"text":338,"children":925},[926,927,928,929,931,932],{"id":344,"depth":915,"text":345},{"id":383,"depth":915,"text":384},{"id":433,"depth":915,"text":434},{"id":478,"depth":915,"text":930},"Using Invalid Values: undefined, Functions, Date Objects, etc.",{"id":518,"depth":915,"text":519},{"id":569,"depth":915,"text":570},{"id":650,"depth":908,"text":651,"children":934},[935,936,937],{"id":654,"depth":915,"text":655},{"id":685,"depth":915,"text":686},{"id":700,"depth":915,"text":701},{"id":730,"depth":908,"text":731},{"id":815,"depth":908,"text":816},{"id":891,"depth":908,"text":892},"json_tools","2026-08-23T00:00:00.000Z","A developer-focused guide to what JSON is, its data types and syntax rules, plus real-world API debugging examples and common JSON error fixes.",false,"md",null,"\u002Fblog\u002Fcover\u002Fen\u002Fwhat-is-json-cover.svg",[949,950],"en","zh-CN",{},true,"\u002Fen\u002Fblog\u002Fwhat-is-json",{"slug":955,"text":956,"btn":682},"json-editor","🚀 Skip straight to formatting\u002Fvalidating your JSON:",{"title":5,"description":943},"en\u002Fblog\u002Fwhat-is-json",[960,887,961,962,963],"JSON","JSON Validator","API Debugging","Web Development","VfC-Ya_C_EBjdy1ftjp5NquHkAIO2AB0Eka1mtelg9w",[966,969],{"path":967,"title":968},"\u002Fzh\u002Fblog\u002Fjson-parse-error-debug","JSON 解析失败怎么办？接口调试中的 10 个典型错误与排查步骤",{"path":970,"title":971},"\u002Fzh\u002Fblog\u002Fwhat-is-json","JSON 是什么？结构、语法与常见错误（2026 开发者实战指南）",1791273862011]