Json 笔记

1、JSON的四个基本原则

  • 并列的数据之间用逗号(“ , “)分隔
  • 映射用冒号(“ : ”)表示
  • 并列数据的集合(数组)用方括号(“[ ]”)表示
  • 映射的集合(对象)用大括号(“{ }”)表示

    2、JSON要求字符集必须是Unicode,受约束性强

    3、JSON数据格式和serialize数据格式的异同和使用

    相同点

  • 都是把其他数据类型转换成一个可以传输的字符串
  • 都是结构性数据

    不同点

  • Serialize序列化后的数据格式 保留数据原有类型
  • JSON数据格式相比Serialize序列化之后的数据格式要更简洁

    使用场景

  • JSON适合数据量大,不要求保留原有数据类型的情况下使用
  • Serialize 适合存储带有加密方式的数据串,防止数据被中途截取反序列化破解

    4、PHP中操作JSON的重要函数

  • 加密:Json_encode();
  • 解密:Json_deconde();

    5、什么是索引数组和关联数组

    索引数组定义:
    1
    $array_1 = array('name','age');  // 产生数据:[ "name","age" ] 数组

关联数组定义:

1
$array_2 = array( 1 => 'name',2 => 'age');   //产生数据:{"1" : "name", "2" : "age"}

6、JSON的官方网络媒体类型是application/json。JSON的文件名扩展是.json。统一标识类型(Uniform Type ldentifier)是public.json。

7、JSON 使用范围

  • 用于编写基于 JavaScript 应用程序,包括浏览器扩展和网站。
  • JSON 格式可以用于通过网络连接序列化和传输结构化数据。
  • 主要用于在服务器和 Web 应用程序之间传输数据。
  • Web 服务和 APIs 可以使用 JSON 格式提供公用数据。
  • 还可以用于现代编程语言中。

    8、在使用for遍历时,只能通过myObj[x]来获取相应属性的值,而不能使用myObj.x

1
2
3
4
5
6
7
8
<div id="demo"></div>
<script>
var myObj = {"name":"runoob","alexa":10000,"site":"www.runoob.com"};

for(x in myObj){
document.getElementById("demo").innerHTML += myObj[x] + "<br>"
}
</script>

9、json在进行通过键名来获取值时,需要特别注意一下。把键名赋值给另外一个变量,然后通过.方式去获取值。这种方式是行不通的。

1
2
3
4
var myObj,x;
myObj = {"name":"runoob","alexa":10000,"site":null};
x = "name";
document.getElementById("demo").innerHTML = myObj.x; //结果是undefined

只能通过[]方式去访问

1
2
3
4
var myObj,x;
myObj = {"name":"runoob","alexa":10000,"site":null};
x = "name";
document.getElementById("demo").innerHTML = myObj[x]; //结果是runoob

10、删除对象属性

我们可以使用delete关键字来删除JSON对象的属性:

1
delete myObj.sites.site1;

可以使用中括号([])来删除JSON对象的属性:

1
delete myObj.sites["site1"];

11、parse异常

解析数据

JSON不能存储Data对象。如果你需要存储Data对象,需要将其转换为字符串。之后将字符串转换为Data对象。

1
2
3
4
5
var text = '{"name":"Runoob","initData":"2013-12-14","site":"www.runoob.com"}';
var obj = JSON.parse(text);
obj.iniDate = new Data(obj.iniDate);

document.getElementById("demo").innerHTML = obj.name + "创建日期" + obj.iniDate;

我们可以启用JSON.parse的第二个参数reviver,一个转换结果的函数,对象的每个成员调用此函数。使用JSON.parse的reviver函数时一定要注意遍历到最后的顶层对象key为””,需要返回value。

1
2
3
4
5
6
7
8
9
var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';
var obj = JSON.parse(text, function (key, value) {
if (key == "initDate") {
return new Date(value);
} else {
return value;
}});

document.getElementById("demo").innerHTML = obj.name + "创建日期:" + obj.initDate;

12、stringify异常

解析数据

JSON不能存储Date对象
JSON.stringify()会将所有日期转换为字符串

1
2
3
var obj = { "name":"Runoob", "initDate":new Date(), "site":"www.runoob.com"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;

之后你可以再将字符串转换为Date对象

13、strinfify解析函数

JSON 不允许包含函数,JSON.stringify() 会删除 JavaScript 对象的函数,包括 key 和 value。

1
2
3
4
var obj = { "name":"Runoob", "alexa":function () {return 10000;}, "site":"www.runoob.com"};
var myJSON = JSON.stringify(obj);

document.getElementById("demo").innerHTML = myJSON;

我们可以在执行 JSON.stringify() 函数前将函数转换为字符串来避免以上问题的发生:

1
2
3
4
5
var obj = { "name":"Runoob", "alexa":function () {return 10000;}, "site":"www.runoob.com"};
obj.alexa = obj.alexa.toString();
var myJSON = JSON.stringify(obj);

document.getElementById("demo").innerHTML = myJSON;

不建议在JSON中使用函数。

14、在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以JSON对象和JSON字符串之间的相互转换是关键。

交流

我是Rocken,我们一起进步,共勉

-------------本文结束感谢您的阅读-------------
0%