一、定义

  • JSON 是一种数据格式

  • 使用 javaScript (Java 死鬼破特)对象表示法

二、特点

1、JSON 与 XML格式数据的区别

  

======

  • 两种格式的数据,都是跨语言,跨平台
  • c、c++、java、php、python、go 等都能处理这两种格式
  • Windows、Linux、Unix都能承载这两种格式
  • json 更为清晰,冗余更少,更轻量级,传输效率更高
  • xml 常常导致复杂的代码,极低的开发效率
  • 对于大多数 web 应用来说,根本不需要复杂的 xml 来传输数据

2、json 结构

  • 对象结构:键值对

    • json 格式的数据,在 python 中是以字符串或者字节类来呈现
    • json 格式数据,所有的 key 都是用“双引号”来包裹的
    • “单引号”是不可以的
    • value 数字可以不用双引号包裹
    • 空值一定是 小写的 null
a = {
"key1": 12,
"key2": "value"
}
  • 数组结构-嵌套字典的列表
b = [
{
"key1": "value1",
"key2": "value2"
},
{
"key3": "value3",
"key4": "value4"
},
]

3、注意事项

  • json 格式的数据,在 python 中以字符串形式呈现
  • json 中的空为 null
  • json 中除空和数字外,所有的 key 和 value 都是字符串,且一定要以双引号括起来

三、json数据格式与Python字典互相转换 ------ 为了获取数据方便

看到 null 是 json 格式字符串,因为使用 eval 进行转换会报错(报未定义);否则是 字典类型字符串

没有 null 可以是 json 格式也可以是 字典类型字符串

  • loads()和load():

    • loads() 是直接读取json格式的数据,并转换为字典型数据类型
    • load() 是读取json文件,将从json文件对象中获取的json数据转换为字典型数据类型
  • dumps()和dump():

    • dumps() 是将字典型数据类型直接转换为json数据格式
    • dump() 是将字典型数据类型转换为json数据格式后存放到json格式文件中

json.loads :(篓子)-- 将 json 格式的数据转化为-----Python中的字典类型

import json
# json格式的字符串 -- 字符串要写在同一行,外层使用单引号
data_json = '{"msg": "登录成功", "code": "10001", "data": null, "status": 1}' # 将 json 格式的数据转化为 Python 中的字典类型
# 会将 json 格式空值null转化为 Python 中字典类型的空值 None
data_dict = json.loads(data_json, encoding='utf-8')
print(data_dict) # 结果:
{'msg': '登录成功', 'code': '', 'data': None, 'status': 1}

json中的.dumps   : (当慕斯)Python中字典dict类型转化为-------json格式的数据

# 将python中字典类型转化为json格式的数据
# 会将 Python 中字典类型的空值 None 转换为 json 格式的空值 null
one_dict = {'name': '麦穗', "age": 18, "money": None} # 记忆:宕机 --> dj(dict -- json)
# ensure_ascii=True 默认为 True 遇到中文进行编码,False 不进行编码
one_json = json.dumps(one_dict, ensure_ascii=False)
print(one_json) # 结果:{"name": "麦穗", "age": 18, "money": null}

load() :(楼的)读取json文件中的json数据并转换为字典型的数据类型

import json

# 创建json格式的TXT文件,
# 内容为:{"msg": "登录成功", "code": "10001", "data": null, "status": 1} # 第一种情况,读取json文件中的json数据并转换为字典型的数据类型
# mode 默认为="r",encoding 指定编码
with open("json_text.txt", encoding="utf-8") as file:
one_dict = json.load(file)
print(one_dict) # 结果:{'msg': '登录成功', 'code': '10001', 'data': None, 'status': 1}

dump() :(当泼)将字典数据类型转换为json格式数据并存储到json格式的文件中

# 第二种,将字典数据类型转换为 json 格式数据并存储到json格式的文件中
two_dict = [{"one": {"name": "流年", "age": 20, "love": None}},
{"two": {"name": "阿登", "age": 25, "love": True}}]
# 使用上下文管理器 with
# ensure_ascii(恩数额儿_安斯k) 默认True,会进行编码;为如果是中文不进行编码使用 False
# indent (in den 特) 空两格美化
with open("write_json.txt", mode="w", encoding="utf-8") as one_file:
json.dump(two_dict, one_file, ensure_ascii=False, indent=2) # 结果:
[
{
"one": {
"name": "流年",
"age": 20,
"love": null
}
},
{
"two": {
"name": "阿登",
"age": 25,
"love": true
}
}
]

  

  json 模块封装,看看大佬怎么封装的,转载自:https://www.cnblogs.com/xiaogongjin/p/11400475.html

import json

class HandleJson:
'''
定义一个json格式数据处理类
''' @staticmethod
def loads_data(data):
'''
将json数据格式的数据转换为字典型的数据类型
:param data: json格式字符串
:return: 字典数据类型
'''
dict_ison = json.loads(data)
return dict_ison @staticmethod
def load_data(filename):
'''
读取json文件中的json数据并转换为字典型的数据类型
:param filename:json文件名
:return:字典数据类型
'''
with open(filename, mode='r', encoding='utf-8') as fp:
dict_file = json.load(fp)
return dict_file @staticmethod
def dumps_data(data):
'''
将字典数据类型转换为json格式类型数据
:param data: 字典数据类型
:return: json格式字符串
'''
json_dict = json.dumps(data, ensure_ascii=False)
return json_dict @staticmethod
def dump(data, filename):
'''
将字典数据类型转换为json格式数据并存储到json格式的文件中
:param data: 字典数据类型
:param filename: json文件名
:return: json格式文件
'''
with open(filename, mode='w', encoding='utf-8') as fp:
json.dump(data, fp)

*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/  谢谢!!*******

使用 json 模块,使json数据格式与Python字典dict数据格式互相转换,获取数据更加方便的更多相关文章

  1. 时间模块之datatime模块、os模块、sys模块、json模块、json模块实操

    目录 一.模块的绝对导入和相对导入 二.包的概念 三.编程思想的转变 四.软件开发目录规范 五.常见的内置模块 一.时间模块之datatime模块 1.datetime.datetime.today( ...

  2. python字典dict的增、删、改、查操作

    ## python字典dict的增.删.改.查操作dict = {'age': 18, 'name': 'jin', 'sex': 'male', }#增# dict['heigh'] = 185 # ...

  3. Python 字典 dict() 函数

    描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...

  4. 'dict_values' object does not support indexing, Python字典dict中由value查key

    Python字典dict中由value查key 众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句 ...

  5. python 字典dict - python基础入门(15)

    前面的课程讲解了字符串str/列表list/元组tuple,还有最后一种比较重要的数据类型也需要介绍介绍,那就是python字典,俗称:dict. python中的字典可与字符串/列表/元组不同,因为 ...

  6. python-利用json模块处理json数据几个函数总结

    1.前言 json是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写. 前端和后端进行数据交互,其实就是JS和Python进行数据交互. 接口间或者前后端间的语言不一致,不同 ...

  7. json模块:json.dumps()、json.loads()、json.dump()、json.load()

    json.dumps().json.loads().json.dump().json.load() 4个方法的总结和使用: 注意:存在文件里面的东西,读出来都是字符串 import json 1.js ...

  8. Python字典(dict)使用技巧

    字典dict是Python中使用频率非常高的数据结构,关于它的使用,也有许多的小技巧,掌握这些小技巧会让你高效地的使用dict,也会让你的代码更简洁. 1.默认值 假设name_for_userid存 ...

  9. python 字典 dict 该注意的一些操作

    在用python处理dict 的时候,有几个该注意的地方,这里跟大家提一下: 1)操作dict 时,尽量少产生新的列表对象.比如: 遍历dict的时候,如果用 dic = {"a" ...

随机推荐

  1. python-定时任务-apschelduer

    python-定时任务-apschelduer 1.      apscheduler 1.1.    install pip install apscheduler 1.2.    basic co ...

  2. 弹出USB大容量存储设备时出问题的解决方法

    我的计算机->管理->系统工具->事件查看器->自定义视图->Kernel-Pnp->详情->进程ID 然后在任务管理器里找到该进程(任务管理器->查看 ...

  3. AWS-DDNS

    1. DDNS 2. 在 Linux 实例上设置动态 DNS 2.1 Ubuntu 2.2 Amazon Linux 2 2.3 Arch Linux 2.4 其他Linux系统 3. 更多相关 1. ...

  4. Go语言的map

    map一般是以库的方式提供,在C++和C#和JAVA中都需要引用相应的库而Go语言不需要引入库,可以直接方便使用 定义:map是一堆键值对的未排序集合.无序 1.声明变量: map的声明基本上没有多余 ...

  5. Java连载78-深入自动拆装箱、Date类和SimpleDateFormat格式化

    一.深入自动拆装箱 1.直接举例: public class D78_AutomaticUnpackingAndPacking{ public static void main(String[] ar ...

  6. 128、Java面向对象之对象的比较

    01.代码如下: package TIANPAN; class Book { private String title; private double price; public Book(Strin ...

  7. Fescar分布式事务实现原理解析探秘

    前言 fescar发布已有时日,分布式事务一直是业界备受关注的领域,fescar发布一个月左右便受到了近5000个star足以说明其热度.当然,在fescar出来之前,已经有比较成熟的分布式事务的解决 ...

  8. 分段控制器UISegmentedControl的使用、同一个控制器中实现多个View的切换、addChildViewController等方法的使用

    本文先讲解简单的分段控制器UISegmentedControl的使用,然后具体讲解它最常使用的场景:同一个控制器中实现多个View的切换. 文章构思: 1.先直接讲解一张UI效果图的四种实现方式. 2 ...

  9. 吴裕雄--天生自然HADOOP操作实验学习笔记:Wor的Count程序的编写

    实验目的 理解mapreduce的工作原理 理解Partitioner的书写方法 理解GroupingComparator的书写方法 实验原理 我们已经学习了hadoop的大部分基础知识,剩下的就是利 ...

  10. 1_02_MSSQL课程_T_SQL语句入门

    1.->全名:结构化查询语言(Structured Query Language)    关系数据库管理系统的标准语言. ->SQL主要分为三种语言:DML\DDL\DCL DDL(数据定 ...