JavaScript与JSON

本文介绍了JSON数据格式的基本概念,包括其严格的格式要求、在线校验工具及JavaScript中处理JSON的三大核心方法:JSON.stringify用于序列化对象,JSON.parse用于解析字符串,toJSON则用于对象的自定义序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSON格式

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON用完全独立于编程语言的文本格式来存储和表示数据。实际上JSON就是字符串,描述了一个对象(花括号)或数组(方括号)。例如:'{"name":"jack","age":25}''[{"name":"jack","age":25}, {"name":"rose","age":13}]'
JSON格式特别严格,必须遵守:
1. 键名必须加双引号。
2. 属性值只能是数值(10进制),字符串(加双引号),布尔值,null,数组或符合JSON要求的对象,不可以是函数,NaN,Infinity,undefined。
3. 最后一个属性后面不能有逗号
4. 小数点后必须有数字

JSON在线校验网站

http://www.bejson.com/

JavaScript处理JSON的三大方法

  1. JSON.stringify(value[, replacer[, space]]):将JavaScript对象序列化成字符串。
    参数说明:

    • value:必需, JavaScript对象。
    • replacer:可选。函数或数组。
      如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值,这个函数必须对每一项都有返回。使用返回值而不是原始值。函数必须针对每一个原来的属性值都要有新属性值的返回。如果是数组形式,那么key是索引,而value是这个数组项。
      如果 replacer 是一个数组,只有在数组中出现的属性才会被序列化进结果字符串。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。
    • space:可选,文本添加缩进、空格和换行符,不要用。

    因为大部分JavaScript对象的语法并不严格,所以JSON.stringify会对参数值进行处理:

    • 键名自动加双引号。
    • 非数组对象的属性,可能会乱序。
    • 非数组对象中的undefined属性的元素、函数,序列化过程中会忽略。但是数组对象中的undefined属性的元素、函数会变为null。
    • 不论在数组还是非数组的对象中,NaN、Infinity和-Infinity都被转化为null
var manObj={  
    "firstName": "Kika",
    "lastName": "Jack",
    "age":18
};

var manStr1=JSON.stringify(manObj,function(k,v) {
    if (k === "age") {
        return "000" + v;
    } else {
        return v;
    }
});
var manStr2=JSON.stringify(manObj,["firstName","age","address"]);

2.JSON.parse(text[, reviver]) :解析字符串为JavaScript对象
对字符串格式要求严格,要是字符串格式有误,会报错。
参数说明:
- text:必需, 一个有效的 JSON 字符串。
- reviver: 可选,一个转换结果的函数, 处理解析后的每一个属性并返回

JSON.parse(str,function(k,v){  
    console.log(k);
    console.log(v);
});

3.toJSON():将 JavaScript对象转换为字符串,并格式化为 JSON 数据格式。如果一个对象上实现了toJSON方法,调用JSON.stringify去序列化这个对象时,JSON.stringify会序列化这个对象的toJSON方法返回的值。Date类型可以直接传给JSON.stringify做参数,就是因为Date类型内置了toJSON方法。

var info={  
    "msg":"data...",
    "toJSON":function(){
        var msg=new Object();
        msg["msg"]="hehe";
        return msg;
    }
};
//返回{"msg":"hehe"}
JSON.stringify(info); 

var d=new Date();
var n=d.toJSON();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值