1.什么是json

json(Javascript Obiect Notation,JS对象标记)是一种轻量级的数据交换格式。

json是基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

  • 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

json本质是从js中拿出来的一个对象,也可以说json是js的一个子集。也就是说json的格式来源于JS的格式。

Django框架—Ajax请求

2.json使用的规则

1.js中支持单引号,也支持双引号,可以没有引号

 //在js中吧{}这样的类型叫做自定义对象,js中没有字典一说
data = {
    'name':'xiongda',
    "name":"xiongda",
     name:"xiongda"        
}     //js对象默认会把自己的键当成字符串处理,所以可以加引号也可以不加

2.json中支持的格式

  • json只认识双引号

  • json一定是一个字符串(字符串里面只能包含一个对象)

'{"name":"xiongda"}'

3.json的使用

// 合格的json对象
["one", "two", "three"]
{ "one": 1, "two": 2, "three": 3 }
{"names": ["张三", "李四"] }
[ { "name": "张三"}, {"name": "李四"} ]
​
// 不合格的json对象
{ name: "张三", 'age': 32 }  // 属性名必须使用双引号
[32, 64, 128, 0xFFF]  // 不能使用十六进制值
{ "name": "张三", "age": undefined }  // 不能使用undefined
{ "name": "张三",
  "birthday": new Date('Fri, 26 Aug 2011 07:13:10 GMT'),
  "getName":  function() {return this.name;}  // 不能使用函数和日期对象
}

3.python和js中的序列化/反序列化

python中的序列化/反序列化

python中序列化和反序列化需要导入模块json

  • json.dumps(obj):将python对象序列化为json格式字符串

  • json.loads(json对象):将json对象反序列化为python对象

import json
# s = "{'name':'chao','age':18}" #普通字符串,每加引号的没问题,加了引号的,必须是双引号才能使用json.loads()。
s = '{"name":"xiongda","age":18}'   #json字符串,里面必须是双引号
ret = json.loads(s)
print(ret,type(ret))  # {'name': 'xiongda', 'age': 18} <class 'dict'>
​
d = {'name': 'xiongda', 'age': 18}
ret = json.dumps(d)
print(ret,type(ret))  # {"name": "xiongda", "age": 18} <class 'str'>

js中的序列化和反序列化

js中的序列化和反序列化是通过JSON来实现,可以直接使用

  • JSON.stringify():将一个javascript对象转化为json字符串

  • JSON.parse():将一个json字符串转换为javascript对象

<script>
// js中的json的序列化
s2={'name':'xiongda'};
console.log(JSON.stringify(s2),typeof JSON.stringify(s2)) //string
// js中的json反序列化
s = '{"name":1}';    
var data = JSON.parse(s);
console.log(data);
console.log(typeof data);   //object
</script>

4.json和xml的比较

  1. XML也是存数据的一种格式,也是一种标记语言。它是利用节点进行查找的

  2. JSON 格式于2001年由 Douglas Crockford 提出,目的就是取代繁琐笨重的 XML 格式。

SON 格式有两个显著的优点:

  • 书写简单,一目了然;

  • 符合 JavaScript 原生语法,可以由解释引擎直接处理,不用另外添加解析代码。

所以,JSON迅速被接受,已经成为各大网站交换数据的标准格式,并被写入ECMAScript 5,成为标准的一部分。

json和xml使用实例

xml表示省市数据

<?xml version="1.0" encoding="utf-8"?>
<country>
    <name>中国</name>
    <province>
        <name>黑龙江</name>
        <cities>
            <city>哈尔滨</city>
            <city>大庆</city>
        </cities>
    </province>
    <province>
        <name>广东</name>
        <cities>
            <city>广州</city>
            <city>深圳</city>
            <city>珠海</city>
        </cities>
    </province>
    <province>
        <name>台湾</name>
        <cities>
            <city>台北</city>
            <city>高雄</city>
        </cities>
    </province>
    <province>
        <name>新疆</name>
        <cities>
            <city>乌鲁木齐</city>
        </cities>
    </province>
</country>
View Code

相关文章: