JSON 的基本概念
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。它独立于语言,但与 JavaScript 对象表示法相似。
JSON 实例
- 简单的 JSON 字符串实例:
 
"{\"name\": \"小张\", \"age\": 25, \"city\": \"San Francisco\"}"
- 包含数组的 JSON 字符串实例:
 
"{\"name\": \"小张\", \"age\": 30, \"hobbies\": [\"reading\", \"traveling\", \"photography\"]}"
- 嵌套的 JSON 字符串实例:
 
"{\"name\": \"小王\", \"age\": 35, \"address\": {\"street\": \"123 Main St\", \"city\": \"Seattle\", \"zip\": \"98101\"}}"
- 包含 null 值的 JSON 字符串实例:
 
"{\"name\": \"小李\", \"age\": null, \"city\": \"Los Angeles\"}"
- 包含嵌套数组和对象的 JSON 字符串实例:
 
"{\"name\": \"小赵\", \"age\": 40, \"friends\": [{\"name\": \"Friend 1\", \"age\": 38}, {\"name\": \"Friend 2\", \"age\": 42}]}"
JSON 格式化后为 JavaScript 对象
在 JavaScript 中,JSON 格式化后的数据结构与 JavaScript 对象非常相似。以下是一些示例:
- 简单的 JSON 对象:
 
{
  "name": "小张",
  "age": 25,
  "city": "San Francisco"
}
- 包含数组的 JSON 对象:
 
{
  "name": "大张",
  "age": 30,
  "hobbies": ["reading", "traveling", "photography"]
}
- 嵌套的 JSON 对象:
 
{
  "name": "小赵",
  "age": 35,
  "address": {
    "street": "123 Main St",
    "city": "Seattle",
    "zip": "98101"
  }
}
- 包含 null 值的 JSON 对象:
 
{
  "name": "小王",
  "age": null,
  "city": "Los Angeles"
}
- 包含嵌套数组和对象的 JSON 对象:
 
{
  "name": "小李",
  "age": 40,
  "friends": [
    {
      "name": "Friend 1",
      "age": 38
    },
    {
      "name": "Friend 2",
      "age": 42
    }
  ]
}
JSON 语法规则
- 数据为键/值对
 - 数据由逗号分隔
 - 大括号保存对象
 - 方括号保存数组
 
JSON 数据示例
- 字符串值:
 
{
  "name": "小张"
}
- 数字值:
 
{
  "age": 25
}
- 布尔值:
 
{
  "isStudent": true
}
- Null 值:
 
{
  "address": null
}
- 数组值:
 
{
  "hobbies": ["reading", "traveling", "photography"]
}
- 嵌套对象值:
 
{
  "address": {
    "street": "123 Main St",
    "city": "Seattle"
  }
}
JSON 字符串转换为 JavaScript 对象
在 JavaScript 中,可以使用 JSON.parse() 方法将 JSON 字符串转换为 JavaScript 对象。
示例代码
- 使用 
JSON.parse()方法: 
const jsonString = '{"name": "小张", "age": 25}';
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject);
注意JSON.parse()不允许用逗号结尾下面,写法是错误的:
// both will throw a SyntaxError
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse('{"foo" : 1, }');
- 使用 
try-catch处理异常: 
const jsonString = '{"name": "小张", "age": 25';
try {
  const jsonObject = JSON.parse(jsonString);
  console.log(jsonObject);
} catch (error) {
  console.error('Invalid JSON string:', error);
}
- 处理数组类型的 JSON 字符串:
 
const jsonArrayString = '["apple", "banana", "cherry"]';
const jsonArray = JSON.parse(jsonArrayString);
console.log(jsonArray);
- 处理嵌套对象类型的 JSON 字符串:
 
const nestedJsonString = '{"name": "小张", "address": {"city": "San Francisco"}}';
const nestedJsonObject = JSON.parse(nestedJsonString);
console.log(nestedJsonObject);