JSON是一种轻量级的数据格式,常用于跨语言数据传输和存储。在JavaScript中,我们可以使用JSON.parse()方法将JSON字符串解析为JavaScript对象。
const jsonStr = '{"name": "小明", "age": 18}'; const jsonObj = JSON.parse(jsonStr); console.log(jsonObj.name); // 输出小明 console.log(jsonObj.age); // 输出18
如果JSON字符串格式不正确,解析时会抛出JSON解析错误(SyntaxError)。
const invalidJsonStr = '{name: "小明", age: 18}'; try { const jsonObj = JSON.parse(invalidJsonStr); } catch (error) { console.log(error); // 输出SyntaxError: Unexpected token i in JSON at position 1 }
当我们得到一个包含JSON数据的JavaScript对象时,可以使用JSON.stringify()方法将其转换为JSON字符串。
const studentObj = { name: '小明', age: 18 }; const jsonStr = JSON.stringify(studentObj); console.log(jsonStr); // 输出{"name":"小明","age":18}
JSON中支持的数据类型有:字符串、数字、布尔值、null、数组和对象。需要注意的是,JSON不支持JavaScript中的一些特殊类型,例如undefined和函数。
如果要在JSON中表示日期类型,可以使用ISO格式的字符串,并在解析时将这些字符串转换为Date对象。
const dateObj = { date: new Date() }; const jsonStr = JSON.stringify(dateObj, function(key, value) { if (value instanceof Date) { return value.toISOString(); } else { return value; } }); console.log(jsonStr); // 输出{"date":"2022-03-26T06:54:12.123Z"} const json = JSON.parse(jsonStr, function(key, value) { if (typeof value === 'string') { const datetimeRegex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).(\d{3})Z$/; if (datetimeRegex.test(value)) { return new Date(Date.parse(value)); } } return value; }); console.log(json.date instanceof Date); // 输出true