博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中的JSON操作
阅读量:4285 次
发布时间:2019-05-27

本文共 2138 字,大约阅读时间需要 7 分钟。

一、什么是JSON?

    JSON:JavaScript 对象表示法(JavaScript Object Notation)。JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析。

在 JavaScript 中创建 JSON 对象

Name:

Age:
Address:
Phone:

二、序列化JavaScript数据为JSON数据

     1、 使用静态的JSON.stringify(value[,replacer][,space])将数据序列化为JSON数据。参数说明:

若replacer不是一个函数或者数组,则会抛出异常;若value包含一个循坏引用,也抛出异常。

     2、toJSON()方法:如果value定义了toJSON()方法,那么stringify()方法等价于调用toJSON(),且stringify()方法会首先调用toJSON()方法,并返回该方法返回的结果。

      定义toJSON()方法的类有:String、Boolean、Date、Number。对于没有定义toJSON()方法的数据类型,如Object将被删除,Array将被替换为null。在序列化的过程中,下列字符将会被转义:

      引号(“)、反斜杠(\)/、退格(b)、换行(n)、回车(r)、水平制表(t)、四位十六进制(uhhhh)、Fromfeed(f).

//数据过滤document.write("数据过滤:"+"
");var per = new Object;per.sex = "male";per.age = 29;per.birthday = new Date(1994,2,18);var memberFilter = ["sex","age"];var jsontext1 = JSON.stringify(per,memberFilter,"\t");document.write(jsontext1+"
");//数据转换document.write("数据转换:"+"
");var contents = ["One","Two","Three"];var jsontext2 = JSON.stringify(contents,toUpper);document.write(jsontext2+"
");function toUpper(key,value){ return value.toString().toUpperCase();}//toJSON()方法document.write("toJSON()方法:"+"
");Object.prototype.toJSON = function(key){    var val;    for(val in this)    {        if(typeof(this[val]) === 'string')        {            this[val] = this[val].toUpperCase();        }    }    return this;};var jsontext3 = JSON.stringify(per);document.write(jsontext3);
结果:

三、逆序列化JSON数据为Javascript数据

    使用静态的JSON.parse(text[,reviver])可以将JSON数据逆序列化为JavaScript数据。参数text是JSON字符串;参数reviver定义一个用于过滤和转换结果。

     过滤转换结果是按照从后到前的顺序进行的,对每一个对象成员都会调用该函数:

     1、如果函数返回一个值,则成员的值用该值替换;

     2、如果函数返回一个接收到的原值,则成员的结构不会发生变化;

     3、如果函数返回null或者undefined,则成员将被删除。

     该参数常用于转换JSON数据的ISO日期格式字符串为Javascript的UTC格式的Date对象。如果解析正确,返回一个对象或者数组,;若text指定的JSON字符串格式有错,抛出异常。

var jsontext = '{"birthday":"2008-12-25T12:00:00Z"}';var date = JSON.parse(jsontext,dateReviver);var string = date.birthday.toUTCString();function dateReviver(key,value){	var a;	if(typeof value === 'string')	{		var re = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/;		a = re.exec(value);		if(a)		{			return new Date(Date.UTC(+a[1],+a[2]-1,+a[3],+a[4],+a[5],+a[6]));		}	}	return value;};document.write(string);
结果:

    

   

你可能感兴趣的文章
iOS 之网络下载图片
查看>>
iOS之UILabel------分类创建label,计算文本大小
查看>>
iOS之xib创建view、initWithCoder、awakeFromNib
查看>>
nodejs之异常的处理
查看>>
nodejs之参数的接收GET 和POST
查看>>
iOS之app的运行原理
查看>>
nodejs之异步流程控制ASYNC
查看>>
iOS之跑马灯的实现
查看>>
nodejs之npm的使用、nvm
查看>>
iOS之javascript调用oc
查看>>
nodejs之express(一)简单实现路由
查看>>
nodejs之代码操作mysql(直连和连接池连接mysql)\mysql权限操作
查看>>
nodejs之事件处理机制(抛出事件、监听事件)
查看>>
iOS常用之绑卡或实名认证、收货地址
查看>>
iOS常用之imageview和scrollView显示长图片
查看>>
nodejs之http.request 网页抓取数据
查看>>
iOS常用之tableview的View和controller分离,tableview多级列表
查看>>
MAC硬盘目录结构详解及相关操作
查看>>
nodejs之nightmare的使用--网络爬虫---论坛灌水
查看>>
nodejs操作数据库mongodb
查看>>