软件开发定制定制python 处理json数据

python 处理json数据

  • json官网:

1. json数据格式

json软件开发定制定制的数据格式有2种,分别是:
对象(object):用大括号{}表示;
数组(array):用中括号[]表示。

1.1 对象(object)

在json中对象用“键-值”(key:value)软件开发定制定制方式配对存储,软件开发定制定制对象内容以“{”开始,以“}”结束,软件开发定制定制键与值之间以“:”隔开,软件开发定制定制每组键值对间以逗号“,”隔开。

  • 键(key)软件开发定制定制必须是字符串类型;
  • 值(value)可以是数值(number)、字符串(string)、布尔值(bool)、数组(array)或null值。
  • json格式中,字符串需用双引号,json文件内不能使用注释
    如:{“Name”: “Tom”, “Age”: 18}

1.2 数组(array)

数组由一些列的值(value)组成,以“[”开始,以“]”结束,各个值之间以逗号“,”隔开。
数组的值可以是数值(number)、字符串(string)、布尔值(bool)、数组(array)或null值。
在Python中,json以字符串(string)方式存在。

2. python数据与json数据互转

2.1 将python数据转成json格式

  • python与json数据类型对照:
    • dict --> object
    • list,tuple --> array
    • str,unicode --> string
    • int,float,long --> number
    • True --> true
    • False --> false
    • None --> null
  1. 将列表与元组数据转成

    import json  # 导入json模块# 1.将列表与元组数据转成json数组listNumbers = [1, 3, 5, 7, 9]  # 列表数据tupleNumbers = [2, 4, 6, 8, 10]  # 元组数据jsonData1 = json.dumps(listNumbers)  # 将列表数据转成json数据jsonData2 = json.dumps(tupleNumbers)  # 将元组数据转成json数据print(f'列表转json数组:{jsonData1}')print(f'元组转json数组:{jsonData2}')print(type(jsonData1))print(type(jsonData2))# 列表转json数组:[1, 3, 5, 7, 9]# 元组转json数组:[2, 4, 6, 8, 10]# <class 'str'># <class 'str'>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  2. 将字典元素组成的列表转成json对象

    import json  # 导入json模块# 2.将字典元素组成的列表转成json对象dict_list = [    {'Name': 'Tom', 'Age': 19, 'City': 'New York'},    {'Name': 'Jack', 'Age': 23, 'City': 'London'},    {'Name': 'Mike', 'Age': 25, 'City': 'Tokyo'}]json_data = json.dumps(dict_list)  # 将列表数据转成json数据print(json_data)print(type(json_data))# [{"Name": "Tom", "Age": 19, "City": "New York"}, {"Name": "Jack", "Age": 23, "City": "London"}, {"Name": "Mike", "Age": 25, "City": "Tokyo"}]# <class 'str'>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  3. dumps()的sort_keys参数

    python的字典是无序的数据,使用dumps()将python数据转成json对象时,可以添加sort_keys=True,将转成json格式的对象排序。

    import json  # 导入json模块# 3.dumps()的sort_keys参数"""python的字典是无序的数据,使用dumps()将python数据转成json对象时,可以添加sort_keys=True,将转成json格式的对象排序"""dict_data = {'Name': 'Tom', 'Age': 19, 'City': 'New York'}json_data1 = json.dumps(dict_data)  # 将列表数据转成json数据json_data2 = json.dumps(dict_data, sort_keys=True)  # 将列表数据转成json数据并排序print(json_data1)print(json_data2)print(json_data1 == json_data2)print(type(json_data))# {"Name": "Tom", "Age": 19, "City": "New York"}# {"Age": 19, "City": "New York", "Name": "Tom"}# False# <class 'str'>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  4. dumps()的ident参数

    在将Python的字典数据转成json格式的对象时,可以加上indent设置缩排json对象的键-值,让json对象可以更容易显示。

    import json  # 导入json模块# 4.dumps()的ident参数"""在将Python的字典数据转成json格式的对象时,可以加上indent设置缩排json对象的键-值,让json对象可以更容易显示"""dict_data = {'Name': 'Jack', 'Age': 23, 'City': 'London'}json_data = json.dumps(dict_data, sort_keys=True, indent=4)print(json_data)# {#     "Age": 23,#     "City": "London",#     "Name": "Jack"# }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

2.2 将json格式数据转成python数据

json模块中的loads()方法可以将json格式数据转成python数据。
json数据类型与python数据类型对照:

  • object --> dict
  • array --> list
  • string --> unicode
  • number(int) --> int,long
  • Number(real) --> float
  • true --> True
  • false --> False
  • num --> None
import json# json数据json_data = '{"Name": "Jack", "Age": 25, "Gender": "Male"}'dict_data = json.loads(json_data)  # 转成python对象print(dict_data)print(type(dict_data))# {'Name': 'Jack', 'Age': 25, 'Gender': 'Male'}# <class 'dict'>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3. python处理json文件

3.1 将python数据转成json文件

使用json模块中的dump()方法,可以将python数据转成。

# author:mlnt# createdate:2022/8/18"""使用json模块中的dump()方法,可以将python数据转成json文件格式"""import json# 字典数据dict_data = {'sno': '1001', 'name': 'Jack', 'score': 80}filename = 'test1.json'with open(file=filename, mode='w') as f:    # obj:欲存储为json格式的数据,fp:欲存储的文件对象    json.dump(obj=dict_data, fp=f)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3.2 读取json文件

使用json模块中的load()方法,可以读取json文件,读取json文件的数据将被转换成python的数据格式。

"""使用json模块中的load()方法,可以读取json文件,读取json文件的数据将被转换成python的数据格式"""import jsonfilename = 'test1.json'with open(file=filename, mode='r') as f:    data = json.load(f)print(data)print(type(data))# {'sno': '1001', 'name': 'Jack', 'score': 80}# <class 'dict'>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4. 绘制世界人口地图

  • 安装pygal.maps.world模块

    pip install pygal.maps.world
    • 1

  • 下载

4.1 列出json数据中的人口数据

import jsonfilename = 'population_data.json'with open(file=filename) as f:    json_data = json.load(f)  # 读取json数据for data in json_data:    if data['Year'] == '2010':  # 筛选2010年的数据        countryName = data['Country Name']  # 国家名称        countryCode = data['Country Code']  # 国家代码        population = int(float(data['Value']))  # 人口数        print(f'代码:{countryCode}-->名称:{countryName}-->人口数:{population}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12


COUNTRIES字典中,国家代码用2个英文字母表示。

from pygal_maps_world.i18n import COUNTRIESfor countryCode in sorted(COUNTRIES.keys()):    # COUNTRIES字典中,国家代码用2个英文字母表示    print(f'代码:{countryCode},名称:{COUNTRIES[countryCode]}')
  • 1
  • 2
  • 3
  • 4
  • 5

4.2 读取json数据,绘制地图

import jsonimport pygal_maps_world.mapsfrom pygal_maps_world.i18n import COUNTRIESimport pygal_maps_world.mapsfrom pygal.style import RotateStylefrom pygal.style import LightColorizedStyledef getCountryCode(countryName):    """根据国家名称获取国家代码"""    for code, name in COUNTRIES.items():        if name == countryName:            return code    return Nonefilename = 'population_data.json'with open(file=filename) as f:    # 读取json数据    json_data = json.load(fp=f)populations = {}  # 创建字典for data in json_data:    if data['Year'] == '2010':        countryName = data['Country Name']        population = int(float(data['Value']))        code = getCountryCode(countryName)        if code:            populations[code] = population# 根据人口数量将国家分3组cc_pop_1, cc_pop_2, cc_pop_3, cc_pop_4, cc_pop_5, cc_pop_6 = {}, {}, {}, {}, {}, {}for cc, pop in populations.items():    if pop < 10000000:        cc_pop_1[cc] = pop    elif pop < 50000000:        cc_pop_2[cc] = pop    elif pop < 100000000:        cc_pop_3[cc] = pop    elif pop < 300000000:        cc_pop_4[cc] = pop    elif pop < 500000000:        cc_pop_5[cc] = pop    else:        cc_pop_6[cc] = pop# 加亮颜色主题word_map_style = RotateStyle('#336699', base_style=LightColorizedStyle)word_map = pygal_maps_world.maps.World(style=word_map_style)word_map.title = 'world population in 2010, by country'# wm.add('2010', populations)word_map.add('0-10m', cc_pop_1)word_map.add('10m-50m', cc_pop_2)word_map.add('50m-100m', cc_pop_3)word_map.add('100m-300m', cc_pop_4)word_map.add('300m-500m', cc_pop_5)word_map.add('>500m', cc_pop_6)# word_map.render_to_file('world_population.svg')word_map.render_to_file('world_population.html')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

用浏览器打开生成的html文件。


参考:

  • json官网:
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发