导读

JSON (全称:JavaScript Object Notation )是一种轻量级的数据交换格式,所谓的轻量级,是与 XML 数据结构相比而言的,在描述相同的数据下,JSON 所需的字符比XML 的要少,这就意味着相同意义的数据, JSON 能更快完成传输,所需的流量也会减少,所以在移动互联网中JSON 数据格式会用的更多。

关于 JSON 数据完整概述,可直访:

JSON 数据类型

JSON 是一种非常灵活,具有高度可定制化的数据格式,其一般由以下几种数据类型单一或混合组成:

number:整型数据;

boolean:布尔类型数据,true或false;

string:字符串数据;

null:null;

array:数组(Array),类似 Python 的列表 — [];

object:类似 Python 的字典数据 — { Object:value }。

其中,对象(object) 和 数组(array) 为比较特殊且常用的两种类型:

J
SON 对象

基本格式:

{“Object1”: "value1", “Object2”: "value2", ...}

JSON 对象数据格式与 Python字典类似,同样以键值对形式存在,外层使用大括号{}包裹,Object 为“键”,value 为对应的“值”,“键”与“值”之间用冒号:间隔,元素间用逗号,间隔,其中 Object 可用数字或字符串表示,value 可以是任意类型的数据,可以是数字、字符串、字典、数组等。

示例:

{

"name": "taitai",

"birthday": "2000-1-1",

"hobby": "['basketball', 'football']",

"score": "{'chinese': '88', 'math': '95', 'english': '82'}"

}

JSON 数组

基本格式:

["element1", "element2", ...]

JSON 数组与 Python 列表数据的格式类似,均是一连串的元素集合,在 JSON 数组一个较为特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,其值的类型可以是任意类型。

示例:

[{

"name": "taitai",

"birthday": "2000-1-1",

},

{

"name": "taitai",

"birthday": "2000-1-1",

}

]

JSON 规定字符集必须为 UTF-8 编码。同时,为了统一解析,JSON 还规定 Object (键) 必须使用双引号""包裹,且当 value(值) 为字符串数据时,也必须用双引号""包裹。

JSON 编码 & 解码

在互联网中,如果需要传输对象数据,就需要先将该对象转化为 JSON 格式的字符串,这个过程称为“对象序列化(编码)”,反之,在接收到 JSON 字符串后,要转为目标对象使用时,就需要进行 “反序列化(解码)”,两者是互逆过程。

Python 数据与 JSON 数据映射关系

Python 数据

JSON 数据

整数、浮点数等数据类型

数字

字符串

字符串

布尔类型(True 、False)

true、false

Null

null

列表、元组

数组

字典

对象

JSON 编码

Python 提供了一个内置的 json 模块用于处理 Python数据 与 JSON数据 的相互转换操作。其中模块提供的 dumps 和 dump 方法用于将 Python 对象转换为 JSON 数据,即实现编码过程。

实例:

# coding=utf-8

import json

# 创建数据

data = {

'name': 'taitai',

'age': 18,

'hobby': ['basketball', 'football'],

'score': {'chinese': '88', 'math': '95', 'english': '82'}

}

print(data)

print(type(data)) # 编码前数据类型

# dumps 编码(单行输出)

data2 = json.dumps(data)

print(data2)

print(type(data2)) # 编码后数据类型

# dumps 编码(排版输出,指定逐层跳格为 4)

data2 = json.dumps(data, indent=4)

print(data2)

# dump方法:将数据编码,并写入指定的文件

# 不排版

with open('./data2.json', 'w') as f:

json.dump(data2, f)

# 排版

with open('./data3.json', 'w') as f:

json.dump(data2, f, indent=4)

实例输出:

{'name': 'taitai', 'age': 18, 'hobby': ['basketball', 'football'], 'score': {'chinese': '88', 'math': '95', 'english': '82'}}

{"name": "taitai", "age": 18, "hobby": ["basketball", "football"], "score": {"chinese": "88", "math": "95", "english": "82"}}

{

"name": "taitai",

"age": 18,

"hobby": [

"basketball",

"football"

],

"score": {

"chinese": "88",

"math": "95",

"english": "82"

}

}

同时还会在当前目录下创建 data2.json 和 data3.json 两个文件。

JSON 解码

上述实例实现了 JSON 的编码操作,前面也说了有编码就有解码,这是一个相互伴随的过程,json 模块同样提供了 loads() 和 load() 方法实现 JSON 数据的解码操作。

实例:

# coding=utf-8

import json

# 创建数据

json_data = r'{"name": "taitai", "age": 18, "hobby": ["basketball", "football"], "score": {"chinese": "88", "math": "95", "english": "82"}}'

print("json_data 数据:", json_data)

print("json_data 数据类型:", type(json_data)) #

# 解码

data = json.loads(json_data)

print("data 数据:", data)

print("data 数据类型:", type(data)) #

print(data['name'])

print(data['hobby'])

print(data['score'])

# 解码 JSON 文件

with open('./data2.json', 'r') as f: # 使用前面编码生成的 JSON 文件

data2 = json.load(f)

print("JSON 文件解码后,内容为:\n", data2)

实例输出:

json_data 数据: {"name": "taitai", "age": 18, "hobby": ["basketball", "football"], "score": {"chinese": "88", "math": "95", "english": "82"}}

json_data 数据类型:

data 数据: {'name': 'taitai', 'age': 18, 'hobby': ['basketball', 'football'], 'score': {'chinese': '88', 'math': '95', 'english': '82'}}

data 数据类型:

taitai

['basketball', 'football']

{'chinese': '88', 'math': '95', 'english': '82'}

JSON 文件解码后,内容为:

{

"name": "taitai",

"age": 18,

"hobby": [

"basketball",

"football"

],

"score": {

"chinese": "88",

"math": "95",

"english": "82"

}

}

喜欢 (6)or分享 (0)

python json数据格式数组内元素递增赋值_利用Python实现JSON格式数据的编码与解码操作...相关推荐

  1. python json数据格式数组内元素递增赋值_python深浅复制,类型转换, json操作,数组操作...

    python深浅复制 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷 ...

  2. python 一维数组所有元素是否大于_利用Python进行数据分析(5) NumPy基础: ndarray索引和切片...

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  3. python中的数组与列表的区别_在python中,如何将数组/列表与numb进行比较

    您的代码:array = [] while len(array) < 1000: i=2 if i%array == 0: append.array(i) i = i + 1 print arr ...

  4. python找列表中相邻数的个数_利用python求相邻数的方法示例

    前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的 ...

  5. 如何用python计算年龄_python如何对年龄分段_利用python把年龄分段 - CSDN

    实验内容设计一个数据结构来存储整个学校的基本情况.基本信息应该包括:学号.姓名(可能存在相同的名称).性别.年龄.该计划旨在发现学生的名字.你可以数一数每个年龄段的人.这个想法是为了创建一个字典作为一 ...

  6. python的四种内置数字类型_浅析Python数字类型和字符串类型的内置方法

    一.数字类型内置方法 1.1 整型的内置方法 作用 描述年龄.号码.id号 定义方式 x = 10 x = int('10') x = int(10.1) x = int('10.1') # 报错 内 ...

  7. python爬取英雄联盟所有皮肤价格表_利用Python协程来爬取LOL所有英雄的皮肤高清图片...

    最近有一朋友要LOL的数据进行数据分析,叫我帮他抓一下数据.突发奇想,顺便把英雄的所有皮肤下载到本地好了. PS: 安装了LOL的伙伴图片直接在LOL文件夹里面,可以百度寻找.此贴仅分享下技术思路以及 ...

  8. python每隔一段时间保存网页内容_利用Python轻松爬取网页题库答案!教孩子不怕尴尬了!...

    大家有没有遇到这种令人尴尬的情况:"好不容易在网上找到需要的资源数据,可是不容易下载下来!"如果是通过一页一页的粘贴复制来下载,真的让人难以忍受,特别是像我这种急性子,真得会让人窒 ...

  9. python用一行代码编写一个回声程序_利用Python实现一个WC程序

    项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词数和行数 ...

最新文章

  1. 用AI还原李焕英老照片动态影像
  2. 首个国产量子操作系统「本源司南」重磅问世!!!
  3. linux putty 永久修改字体大小
  4. 任务05—学习 MARKDOWN 语言
  5. sdwan技术发展正蚕食mpls市场—vecloud
  6. 开启DELL Raid卡H730P缓存
  7. mybatis没有clob类型_mybatis将Oracle的Clob类型转成String的方法
  8. 一、spring mvc简介
  9. python登录网站 爬虫_Python爬虫如何使用Cookies登录网站
  10. Java连接postgresql数据库
  11. mysql 解释 游标赋值_Mysql_游标
  12. [原创]公布读取瑞星注册码的小程序源代码
  13. GPCC安装以及踩坑经历
  14. (16) Node.js 模块的加载逻辑
  15. 详细介绍android rom移植知识普及
  16. 永中office之在线预览(java版)
  17. 初中英语语法(011)-形容词
  18. 开发者的多媒体梦工厂: AV Pipeline Kit究竟是什么?
  19. c#_Form调用另一个Form中的按钮和方法
  20. 未来几年学什么设计更有前途?

热门文章

  1. maven依赖关系中Scope的作用
  2. 使用apache FileUtils下载文件
  3. docker php示例,Docker PHP 例子
  4. php微信小程序多图上传,tp5实现微信小程序多图片上传到服务器功能
  5. vscode私钥设置_VSCode远程开发配置指南
  6. 实战演习-用wse上传下载文件
  7. 使用offsetof对结构体指针偏移操作
  8. RegexDemo6
  9. 【知了堂学习笔记】MySQL数据库常用的SQL语句整理
  10. dropify,不错的图片上传预览插件