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 串重新转换成为对象,这个对象里的方法就无法使用了。

相关文章
|
2月前
|
存储 JSON JavaScript
Python字典和JSON字符串相互转化方法
【2月更文挑战第18天】
64 3
|
5月前
|
JSON JavaScript 数据格式
JS 将 json 对象转成字符串并保留格式 - JSON.stringify()
JS 将 json 对象转成字符串并保留格式 - JSON.stringify()
66 0
|
11天前
|
存储 JSON DataWorks
DataWorks产品使用合集之DataWorks将 MongoDB 中的数组类型写入到 DataWorks 的单个字段时,表示为字符串格式而非 JSON 格式如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
24 3
|
11天前
|
JSON 分布式计算 大数据
MaxCompute产品使用合集之大数据计算MaxCompute 要提取JSON字符串中的所有key-value对,我该怎么操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
19天前
|
JSON 运维 Kubernetes
云效产品使用报错问题之流水线中配置了AppStack,构建时下载的制品内容为json字符串,如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
24天前
|
JSON 数据格式 Python
py如何把字符串转出json
py如何把字符串转出json
7 0
|
1月前
|
JSON 数据格式
Json字符串与QVariantList 对象相互转换
Json字符串与QVariantList 对象相互转换
10 0
|
2月前
|
JSON JavaScript PHP
PHP把unicode编码的json字符串转中文
PHP把unicode编码的json字符串转中文
14 0
|
4月前
|
JSON JavaScript Android开发
JS生成JSON字符串---autojs pro 篇
JS生成JSON字符串---autojs pro 篇
36 0
|
4月前
|
JSON 前端开发 JavaScript
将 JavaScript 对象或值转换为 JSON 字符串:JSON.stringify()
将 JavaScript 对象或值转换为 JSON 字符串:JSON.stringify()
72 3