Json 字符串详解 | 学习笔记

简介: 快速学习 Json 字符串详解

开发者学堂课程【Python 入门 2020年版:Json 字符串详解 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10405


Json 字符串详解


内容介绍:

一、序列化和反序列化的定义

二、实现数据的序列化和反序列化的方法

三、JSON 模块

 

一、序列化和反序列化的定义

通过文件操作,我们可以将字符串写入到一个本地文件。

但是,如果是一个对象(例如列表、字典、元组等),就无法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里。

序列化:设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件。

反序列化:从文件的字节序列恢复到内存中。

例如:

file = open( ' names.txt', 'w', encoding='utf8')

file.write(‘zhangsan’)

file.close()#内容就会被写入到 names.txt 文件中

file = open( ' names.txt', 'w', encoding='utf8')

file.write(12)

file.close()#控制台会报错,且内容就不会被写入文件中

以上会发现 file.write 写入内容时只能写字符串或者二进制,字典、列表、数字等都不能直接写入到文件里。

 

二、实现数据的序列化和反序列化的方法

Python 中提供了 JSON 和 pickle 两个模块用来实现数据的序列化和反序列化。

方法一是将数据转换成为字符串,repr/str 或者使用 json 模块

方法二是将数据转换成为二进制,使用 pickle 模块。

 

三、JSON 模块

JSON( JavaScriptObjectNotation, JS 对象简谱)是一种轻量级的数据交换格式,它基于 ECMAScript 的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

JSON 的本质是字符串,区别在于 json 里要是用双引号表示字符串,如[ ' zhangsan' , 'lisi', 'jack ‘, 'tony’]会被转换成’[ "zhangsan", "Lisi", "jack ", “tony"]'

import json

names = [ ' zhangsan', 'lisi' , "jack ' , "tony' ]

x = json.dumps(names )# dumps 的作用是将数据转换成为字符串

file = open( ' names.txt ' , 'w', encoding="utf8')

file.write()

file.close()

1. JSON 序列化

json 将数据持久(序列化)有两个方法:

(1)dumps: 将数据转换成为 json 字符串,不会将数据保存到文件里。

import json

file = open( 'names.txt’ , ‘w')

names = [ " zhangsan ' , "lisi ' , "wangwu ', "jerry' , "henry ' , "merry' , 'chris']

# file.write(names) 出错,不能直接将列表写入到文件里

#可以调用 json的dumps 方法,传入一个对象参数

result = json.dumps(names)

# dumps 方法得到的结果是一个字符串

print(type(result)) #

#可以将字符串写入到文件里

file.write(result)

file.close()

(2)dump: 将数据转换成为 json 字符串的同时写入到指定文件。

import json

file = open( ' names.txt" , "w')

names = [ " zhangsan ' , 'lisi ' , 'wangwu ' , "jerry' , "henry' , 'merry' , 'chris']

# dump 方法可以接收一个文件参数,在将对象转换成为字符串的同时写入到文件里 json.dump(names,file)

file.close()

注意:

如果是一个空对象,调用 dumps 方法转换成为一个 JSON 对象,得到的结果是null ( JS 里的空对象)

json .dumps(None) # null

2.JSON 反序列化

json 反序列化也有两个方法:

(1)Loads :将 json 字符串加载成为 Python 里的数据。

x = '{ "name" : "zhangsan" , "age":18}’#符合 json 规则的字符串

p = json.loads(x)

print(p, type(p))

print(p[ 'name ' ])#将字符串转化为数据

(2)Load: 读取文件,把读取的内容加载成为 Python 里的数据。

file1 = open( ' names.txt' , 'r', encoding=' utf8')

y = json.load(file1)

print(y)

print(y[0])

file1.close()

json 模块:

1. 将对象转换成为字符串,不管是在哪种操作系统,哪种编程语言里,字符串都是可识别的。

2. json 就是用来在不同平台间传递数据的。

3.并不是所有的对象都可以直接转换成为一个字符串,下标列出了 Python 对象与 json 字符串的对应关系。

image.png

Python                          JSON

dict (字典)                    object(对象)

list,tuple(列表,元组)         array(字符串类型)

str (字符串)                    string

int,float(数字类型)               number

True                              true

False                              false

None                              null

出现以上类型之外的类型就会报错

①如果是一个自定义对象,默认无法装换成为 json 字符串,需要手动指定 JSONEncoder.

②如果是将一个 json 串重新转换成为对象,这个对象里的方法就无法使用了。

相关文章
|
4月前
|
JSON JavaScript 前端开发
JavaScript实现字符串转json对象的方法
JavaScript实现字符串转json对象的方法
|
2月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
206 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
3月前
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
202 64
|
2月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
319 7
|
3月前
|
XML JSON 前端开发
json字符串CSS格式化
json字符串CSS格式化
66 4
|
3月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
4月前
|
JSON Java 数据格式
Java系列之:生成JSON字符串
这篇文章介绍了两种在Java中生成JSON字符串的方法:使用`JSONObject`类及其`toJSONString`方法来动态生成,以及手动拼接字符串的方式来创建JSON格式的字符串。
Java系列之:生成JSON字符串
|
4月前
|
JSON Go 数据格式
Go实现json字符串与各类struct相互转换
文章通过Go语言示例代码详细演示了如何实现JSON字符串与各类struct之间的相互转换,包括结构体对象生成JSON字符串和JSON字符串映射到struct对象的过程。
35 0
|
6月前
|
JSON JavaScript 前端开发
js将json字符串还原为json
【6月更文挑战第15天】js将json字符串还原为json
53 4
|
5月前
|
存储 JSON Java
Java对象转换为JSON字符串
在Java开发中,常需将数据对象转换为JSON存储,如使用Fastjson库。要将Java对象转为JSON,可调用`JSON.toJSONString(obj)`;反向转换则用`JSON.parseObject(str, Class)`。

热门文章

最新文章