淘先锋技术网

首页 1 2 3 4 5 6 7

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