在Javascript中提供了专门的方法来实现JSON格式对象和字符串的转换
1、JSON.stringify():从一个JSON格式对象解析出字符串
语法: JSON.stirngify(value [, replacer] [, space])
参数value:必须,要转换的对象,例如数组、类等
参数 replacer:可选,分为2种方式,一种是方法,一种是数组
方法:(1)space:用空格做分隔符
(2)省略:没有分隔符
(3)数字:定义缩进几个字符,最大是10
(4)转义字符:例如”\t“表示每行一个回车
(5)字符串:每行输出加上这些字符串,最大10个字符
数组:若数组的值在要转换的对象中存在,则数组的值是key,要转换的对象的值是value,不存在将 被忽略
举例
例1 一个参数即要转换的对象
var student = new Object(); student.name = "Amy"; student.age = "25"; student.addr = "BJ"; var json_s = JSON.stringify(student); alert(json_s); 输出结果为:{”name“:"Amy","age":"25","addr":"BJ"}
例2 一个参数即要转换的数组
var student = {}; student["name"] = "Amy"; student["age"] = "25"; var json_s = JSON.stringify(student); alert(json_s); 输出结果为:{"name":"Amy","age":"25"}
例3 两个参数第一个是要转换的数组,第二个是方法
var students = new Array(); students[0] = "Amy"; student[1] = "Kelly"; var json_s = JSON.stringify(students, switchUpper); function switchUpper(key, value) { return value.toString().toUpperCase(); } alert(json_s); 输出结果为:"AMY, KELLY"
例4 两个参数都是数组,只序列化第一个
var students = new Array(); students[0] = "Amy"; student[1] = "Kelly"; var stu = ["name","age"]; var json_s = JSON.stringify(students, stu); alert(json_s); 输出结果为:["Amy, Kelly"] (两个参数都是数组,只序列化第一个)
例5 两个参数第一个的对象,第二个是数组
var students = new Object(); students.name = "Amy"; student.age = "25"; student.addr = "BJ"; var stu =new Array(); stu[0] = "name"; stu[1] = "addr"; stu[2] = "ok"; var json_s = JSON.stringify(students, stu); alert(json_s); 输出结果为:{"name":"Amy","addr":"BJ"} (两个参数第一个的对象,第二个是数组,如果array中的值在object中存在的话,就以array的值为key,object的值为value,不存在的被忽略)
2、JSON.parse():从一个JSON格式字符串解析出对象
举例
var str = '{"name":"Amy","age":"25"}'; var json_o = JSON.parse(str); alert(typeof(json_o)); 输出为:Object age:"25"; name:"Amy"; _proto_:object (可以通过json_o.name来取值)