欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用Ajax实习异步通信(2):使用JSON数据

程序员文章站 2022-07-12 19:20:01
...

JSON结构

JSON结构可以由下面3种类型的数据组成:

  • 值:可以是字符串、数值、布尔值、对象、数组和null,不能是undefined
  • 对象:一组无序键值对
  • 数组:一组有序的值列表

注:
1、JSON可以由无数个对象、数组嵌套组合而成,构成一个复杂的数据结构
2、JSON仅是一种表示结构化数据的格式,不支持变量、函数或类型实例,与JavaScript数据语法相同,但仅是JavaScript的一个子集
示例1

[   {
		"name": "Tom",
		"age": 15
	},
	{
		"name": "Jon",
		"age": 16
	}
]

示例2

[
	["Tom", 15],
	["Jon", 18]
]

解析JSON

JSON.parser() 能把JSON格式的文本转换成一个ECMAScript值(如对象或者数组),用法如下:

JSON.parser(text[,reviver])

参数说明:
text:必需, 一个有效的 JSON 字符串。
reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。分为3种情况:
a、 如果reviver函数返回一个有效值,则成员值将替换位转换后的值
b、 如果reviver函数返回它接收的相同值,则不修改成员值
c、 如果reviver函数返回null或underfunded,则删除成员

示例1: 将JSON字符串转换为对象

var jsontext = '{"name":"Tom","age":15,"phone":"10234567890"}'
var text = JSON.parse(jsontext)
console.log(text.name, text["age"])

注:
1、JSON字符串的格式一定要标准,key和value一定要用双引号包括,否则会出现解析异常非字符串的格式不需要加引号。
2、对象的调用可以点调用也可以数组形式调用

示例2: 将字符串 '{“a”:“1.5”,“b”:2.3}'转换为对象,然后通过toNumber函数确保每个值的类型都为number

var n = '{"a":"1.5","b":2.3}'
var result=JSON.parse(n,function(key,value){
	if(typeof value == 'string'){
		return parseInt(value)
	}else{
		return value
	}
})
console.log(result)

序列化JSON

JSON.stringify() 函数能够将Javascript值转换为JSON字符串,并将该字符串返回

JSON.stringify(value[,replacer][,space])

参数说明:
value:必须参数,设置要转换的Javascript值,通常为对象或者数组
replacer: 可选参数,用于转换结果的函数或数组。
如果replacer为函数,则JSON.stringify将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果该参数函数返回underfunded,则排除该成员。根对象的键是一个空字符串
如果replacer是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当value参数也是数组时将忽略replacer数组
space: 可选参数,用于向返回值JSON字符串添加缩进、空格和换行符
如果省略space,则将生成返回值文本,而没有任何额外空格
如果是一个数字,则返回值文本在每个级别缩进指定数目的空格。如果space大于10,则文本缩进10个空格
如果space是一个非字符串(如\t),则返回值文本在每个级别中缩进字符串中的字符
如果space是长度大于10个字符的字符串,则使用前10个字符

示例1: 将数组转换为JSON字符串

var arr = ["a", "b", "c"]
var str = JSON.stringify(arr)
console.log(str)

示例2: 把对象nums转换为JSON字符串,然后传入replacer函数过滤出即将被字符串化的对象中值为13的属性

var nums = {
	"first": 7,
	"second": 14,
	"third": 13
}
var result = JSON.stringify(nums, replacer)

function replacer(key, value) {
	if (value == 13) {
		return undefined
	} else {
		return value
	}
}
console.log(result)

示例3: 传入replacer数组,仅转换该数组中具有的键值成员,并缩进4个空格

var student = {
	"name": "小明",
	"sex": "男",
	"age": 16,
	"phone": "143520657891"
}
var str = JSON.stringify(student, ["name", "sex"], 4)
console.log(str)

示例4: 将一个数组进行转换,并将数组中每个字符都转换为大写形式

var words = ["Hello World", "Chinese"]
var newWords = JSON.stringify(words, function(key, value) {
	return value.toString().toUpperCase()
})
console.log(newWords)
相关标签: JavaScript