JSON一般用于web页面与服务器之间进行数据交换的数据格式,而今天就说一说 javascript 中将字符串,对象,数组转化成为 json 格试字符串的方法。

JSON.stringify() 方法的定义

JSON.stringify():方法用于将 JavaScript 值转换为 JSON 字符串。
语法:

JSON.stringify(value, replacer, space)

参数:
value:将要被序列化成 一个JSON 字符串的值。
replacer:(可选)如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为null或者未提供,则对象所有的属性都会被序列化;关于该参数更详细的解释和示例,请参考使用原生的 JSON 对象一文。
space:可选, 向返回值JSON 文本添加缩进、空格和换行符以使其更易于读取。
(1)、如果省略space,则将生成返回值文本,而没有任何额外空格。
(2)、如果 space是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。
(3)、如果 space是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。
(4)、如果 space 是长度大于 10个字符的字符串,则使用前 10 个字符。

JSON.stringify() 方法的使用

例:利用 JSON.stringify() 方法将数组转化为JSON字符串
如果将 js 数组转化为 JSON 字符串,则无需要设置 JSON.stringify() 方法的第二个或第三个参数,
示例代码:

<script>
var data = [
    {
        name: "小明", sex: "男", age: 16
    },
    {
        name: "红红", sex: "女", age: 17
    },
    {
        name: "君君", sex: "男", age: 18
    },
    {
        name: "晓晓", sex: "女", age: 19
    }
]; 
var json = JSON.stringify(data);
console.log(json);
</script>

输出结果:

[{"name":"小明","sex":"男","age":16},{"name":"红红","sex":"女","age":17},{"name":"君君","sex":"男","age":18},{"name":"晓晓","sex":"女","age":19}]

例:JSON.stringify() 方法将数组指定数组转化为JSON字符串
如果将 js 数组中的指定部份转化为 JSON 字符串,则只需要将第 JSON.stringify() 方法的第二个参数设置为数组即可,其数组中写入要输出的数组key即可。
示例代码:

<script>
var data = [
    {
        name: "小明", sex: "男", age: 16
    },
    {
        name: "红红", sex: "女", age: 17
    },
    {
        name: "君君", sex: "男", age: 18
    },
    {
        name: "晓晓", sex: "女", age: 19
    }
]; 
//这里用到了 JSON.stringify() 方法的第二个参数
var json = JSON.stringify(data,['name']);
console.log(json);
</script>

输出结果:

[{"name":"小明"},{"name":"红红"},{"name":"君君"},{"name":"晓晓"}]

例:JSON.stringify() 方法的第二个参数为函数时
示例代码:

<script>
var arr = new Array();
arr[0] = "上海";
arr[1] = "北京";
arr[2] = "湖南";
arr[3] = "山东";
arr[4] = "青岛";
//这里用到了 JSON.stringify() 方法的第二个参数为函数
var json = JSON.stringify(arr,function(key, value){
     return  value.toString().toUpperCase(); 
});
console.log(json);
</script>

输出结果:

"上海,北京,湖南,山东,青岛"

注:
toString():方法可把一个逻辑值转换为字符串,并返回结果。
toUpperCase():方法用于把字符串转换为大写。
例:美化 JSON.stringify() 方法输出的结果
示例代码

<script>
var arr = new Array();
arr[0] = "ShangHai";
arr[1] = "BeiJing";
arr[2] = "HuNan";
arr[3] = "ShanDong";
arr[4] = "QingDao";
//这里用到了 JSON.stringify() 第三个参数,比如设置为 '\t'
var json = JSON.stringify(arr,null,'\t');
console.log(json);
</script>

输出结果:

[
    "ShangHai",
    "BeiJing",
    "HuNan",
    "ShanDong",
    "QingDao"
]

PS:此种方法,便于本地查看打印结果