简单记录json的语法以及与python之间的数据关系等,如有错误欢迎指正!
一、json语法
- json是javascript的子集,因此使用javascript语法
- 数据在名称/值对中,双引号表示
- 数据由逗号分隔
- { } 保存对象
- [ ] 保存数组,数组可以包含多个对象
示例如下:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
114.2750633,
30.64403765
]
},
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
114.7284873,30.68291017
]
},
}
]
}
二、python中的json处理
-
python与json数据类型对应表
Python | Json | 数据类型说明 |
dict | object | 字典(无序) |
list,tuple | array | 序列(有序) |
str | string | 字符串 |
int,float | number | 数字类型 |
True,False | true,false | 布尔值True,False |
None | null | 空值 |
2. python字典与json对象
//python的字典定义
dict = {'name':'xiaoming', 'age':17, 'sex':null}
//访问dict元素
x = dict['name']
//json的object定义
myObjcet = {"name":"xiaoming", "age":17, "sex":null};
//访问object元素
y1 = myObject.name;
y2 = myObject["name"];
(1)共同点:存储的均是键值对,key唯一且不可变,value可以取任何语法内的类型
(2)不同点:json对象的key必须使用双引号" ".
3. python序列与json数组
//python-list定义和访问
list1 = ['abc', 12]
print(list1[0])
//python-tuple定义和访问
tuple1 = ('ab', 123)
print(tuple1[1])
//json-array定义和访问
array1 = ["xiaoming", "google"]
print(array1[0])
(1)tuple与list相似,不同点在于 #1 元组的元素不能修改; #2 元组用小括号表示
(2)json的数组可包含多个array或object
注(json):{ }包含的是键值对,value可以是任何类型;
[ ]也可包含任何类型.
4. python处理json文件
json.loads() | 将json数据转换为python数据 |
json.dumps() | 将python数据转换为json数据 |
json.load() | 从json文件中读取数据并解码 |
json.dump() | 将python数据编码并写入json文件 |
import json
//读取文件,将json字符串解码为python对象
with open('xxx.json','r') as f1: #读取平台格式数据
json_data = f1.read()
py_data = json.loads(json_data)
//写入文件,将python对象编码成json字符串
jsonstr = json.dumps(data, indent=2, separators=(',',":"))
with open('yyy.json','w') as f2:
f2.write(jsonstr)