本文分享自华为云社区《从零开始学python | 什么是Python JSON以及如何实现?》,原文作者:Yuchuan 。

您知道如何从在线API传输数据或将各种数据存储到本地计算机吗?您已经将自己沉浸于JSON的一种方式中,JSON表示Java Script Object Notation。它是一种著名的流行数据格式,用于表示半结构化数据。让我们详细了解Python JSON。

本文将讨论以下方面:

  • Python JSON简介
  • 如何在Python中读取JSON文件
  • 解析中
    • 从Python转换为JSON
    • 从JSON转换为Python
  • 熊猫解析JSON
  • JSON序列化[编码]
  • 漂亮的印刷
  • JSON的反序列化[解码]
  • 编码示范

Python JSON简介:

JSON代表JAVA小号script objectn浮选是存储在一个有组织的和容易的方式信息的方式。在浏览器和服务器之间交换数据时,数据必须为文本形式。

如果您想知道它是否是JavaScript?那么答案是否定的。它是一个由文本组成的脚本,用于以人类和机器可读格式存储和传输数据。它是一种受JavaScript启发的小型轻量数据格式,通常以文本或字符串格式使用。JSON数据包几乎等同于python字典。现在,您一定想知道。

如何在Python中读取JSON文件?

问题的答案是,您必须导入JSON模块,该模块通常将Python数据类型转换为JSON字符串文件。它由直接从JSON文件读取和写入的JSON函数组成。Python具有内置的JSON包,并且是标准库的一部分,因此您无需安装它。

例子:

import json

现在您已经了解了Python中的JSON,下面让我们更深入地分析Parsing。

解析:

JSON库可以从字符串或文件中解析JSON 。它还可以将JSON解析到Python字典或列表中,反之亦然。解析通常分为两个阶段:

  1. 从JSON转换为Python
  2. 从Python转换为JSON

让我们更好地了解这两个阶段。

从JSON转换为Python:

您可以使用以下方法将JSON字符串转换为Python json.loads(). :

例子:

import json
people_string = '''
{
"people":[
{
"emp_name": "John smith",
"emp_no.": "924367-567-23",
"emp_email": ["johnsmith@dummyemail.com"],
"has_license": "false"
},
{
"emp_name": "harshit kant",
"emp_number": "560-555-5153",
"emp_email": "null",
"has_license": "true"
}
]
}
'''
data = json.loads(people_string)
print(data)

输出:

从上面的输出中可以看到,它已经打印了Python字典。让我们打印数据类型以更好地理解。

例子:

import json
people_string = '''
{
"people":[
{
"emp_name": "John smith",
"emp_no.": "924367-567-23",
"emp_email": ["johnsmith@dummyemail.com"],
"has_license": "false"
},
{
"emp_name": "harshit kant",
"emp_number": "560-555-5153",
"emp_email": "null",
"has_license": "true"
}
]
}
'''
data = json.loads(people_string)
print(type(data))  #prints the datatype

输出:

<class'dict'>

现在,您已经熟悉一个转换,让我们在第二阶段看看另一种转换类型。

从Python转换为JSON:

通过使用json.dumps(). 下面给出的示例,可以将Python对象转换为JSON字符串:

例子:

import json
people_string = '''
{
"people":[
{
"emp_name": "John smith",
"emp_no.": "924367-567-23",
"emp_email": ["johnsmith@dummyemail.com"],
"has_license": "false"
},
{
"emp_name": "harshit kant",
"emp_no.": "560-555-5153",
"emp_email": "null",
"has_license": "true"
}
]
}
'''
data = json.loads(people_string)
new_string = json.dumps(data)
print(new_string)

输出:

输出将是JSON字符串类型。我已经在JSON到Python的转换中演示了数据类型,将遵循相同的过程来打印数据类型。

让我们继续前进,看看Pandas如何解析JSON。

熊猫解析JSON:

可以通过以下步骤将JSON字符串解析为pandas Dataframe:

  • 以下通用结构可用于将JSON字符串加载到DataFrame中
import pandas as pdpd.read_json(r'Path where you saved the JSON fileFile Name.json')
  • 准备JSON字符串。
  • 创建一个我们正在使用的JSON文件nobel_prize.json。
  • 将JSON文件加载到pandas DataFrame中。

下面实现的代码将我的JSON文件加载到DataFrame中。

import pandas as pd
import jsonwith open(r'C:UsersHarshit_KantDesktopnobel.prize.json') as f:data = json.load(f)
print (data)df = pd.DataFrameprint(df)

输出:

继续前进,让我们看看如何在Python中序列化JSON。

JSON序列化[编码]:

序列化JSON只是意味着您正在编码JSON。它将给定的Python数据结构(ex:dict)转换为其有效的JSON对象。为了处理文件中的数据流,Python中的JSON库使用dump()dumps()方法,该方法进行转换并使其易于将数据写入文件中。

下表是说明将Python数据类型转换为各自的JSON类型的表格。

要记住的要点:

dump() –将数据转换为JSON文件
dumps() –将数据转换为JSON字符串
load() –将JSON文件转换为Python对象
loads()–将JSON字符串的对象转换为Python对象

漂亮的印刷:

Pretty Printing负责代码对齐并使其以人类可读的格式进行。让我们看下面的示例,其中我传递了两个参数'sort_keys',这些参数始终返回布尔True值和'indent'空格。

例子:

import json
people_string = '''
{
"people":[
{"emp_name": "John smith","emp_no.": "924367-567-23","emp_email": ["johnsmith@dummyemail.com"],"has_license": "false"
},
{"emp_name": "harshit kant","emp_no.": "560-555-5153","emp_email": "null","has_license": "true"
}
]
}
'''data = json.loads(people_string)
new_string = json.dumps(data, sort_keys=True, indent=3)
print(new_string)

输出:

继续进行Python JSON教程,让我们了解JSON的反序列化。

JSON的反序列化[Decode]:

JSON的反序列化与序列化完全相反,也就是说,这意味着您正在解码JSON。它将通过使用执行转换的load()load()方法将给定的JSON字符串转换为Python对象。

下表是说明将JSON数据类型转换为其相应的Python类型的表格。

继续进行“ Python JSON”教程。我将通过编码的角度向您展示一个同时进行序列化和反序列化的实时示例。

编码演示:

在此编码演示中,我将使用此处给出的JSON数据集,称为“诺贝尔奖” 。您将学习如何通过JSON文件进行序列化和反序列化。

示例(JSON数据集的序列化):

import jsonwith open('nobel_prize.json.html') as f:data = json.load(f)with open('new_nobel_prize.json.html') as f:json.dump(data,f,indent=2)

输出:

Python代码已成功编译,并创建了一个新文件“ new_nobel_prize.json”,将从现有文件“ nobel_prize.json”中转储数据。

示例(JSON数据集的反序列化):

import jsonwith open('nobel_prize.json.html') as f:
data = json.load(f)for nobel_prize in data['prizes']:
print(nobel_prize['year'],nobel_prize['category'])

输出:

该代码段显示了从JSON文件到其相应的Python对象的更改。

希望您对与JSON的解析,序列化和反序列化有关的所有概念感到清楚。

点击关注,第一时间了解华为云新鲜技术~

从零开始学python | 什么是Python JSON?相关推荐

  1. CSDN周赛第39期:赢签名实体书和图书《从零开始学算法(基于Python)》

    本场竞赛由「电子工业出版社 & CSDN」联合主办. 一.报名方式 第39期周赛报名地址,3月22日 19点开考(周三):https://edu.csdn.net/contest/detail ...

  2. 自学python从零开始学_新手学习python-从零开始学习

    1.学习python urllib2 常用方法 urlopen(url, data, timeout) urllib2.Request() urllib.urlencode() params = {} ...

  3. python自动化从零开始_从零开始学Selenium自动化测试:基于Python:视频教学版

    前言 第1章 自动化测试基础 1.1 自动化测试简介 1.1.1 自动化测试的定义 1.1.2 自动化测试与手工测试的关系 1.1.3 何时开展自动化测试 1.1.4 自动化测试的优势 1.1.5 自 ...

  4. pythonselenium教学视频_从零开始学Selenium自动化测试(基于Python视频教学版)

    本书基于Python语言,系统地介绍Selenium 3自动化测试的相关知识体系及应用.书中的大部分知识点都匹配了相应的案例,便于读者进行实践.本书各章案例清晰易懂,并可独立运行,便于不同需求的读者学 ...

  5. 米筐量化不支持c语言_量化 | 从零开始学量化(三):数据获取途径

    本系列的前两篇都是一些笼统的介绍,供小白制定学习计划时参考,现在该铺垫的都铺垫的差不多了.循序渐进,从本篇开始会写一些能实操的内容,尽量写的很细节,有任何问题欢迎私戳. 本篇给出一些数据获取途径,基本 ...

  6. 米筐量化不支持c语言_从零开始学量化(三):数据获取途径

    本系列的前两篇都是一些笼统的介绍,供小白制定学习计划时参考,现在该铺垫的都铺垫的差不多了.循序渐进,从本篇开始会写一些能实操的内容,尽量写的很细节,有任何问题欢迎私戳. 本篇给出一些数据获取途径,基本 ...

  7. 从零开始学python微课视频版-从零开始学Python(微课视频版)

    基本信息 书名:从零开始学Python(微课视频版) :89.80元 作者:何明 编著 著 出版社:中国水利水电出版社 出版日期:2020_04_01 ISBN:9787517083818 字数:64 ...

  8. python基础实例教程 微课版-从零开始学Python(微课视频版)

    基本信息 书名:从零开始学Python(微课视频版) :89.80元 作者:何明 编著 著 出版社:中国水利水电出版社 出版日期:2020_04_01 ISBN:9787517083818 字数:64 ...

  9. 从零开始学python大数据与量化交易下载_GitHub - mignonwong/Python-100-Days-1: Python - 100天从新手到大师...

    Python - 100天从新手到大师 作者:骆昊 说明:从项目上线到获得8w+星标以来,一直收到反馈说基础部分(前15天的内容)对新手来说是比较困难的,建议有配套视频进行讲解.最近把基础部分的内容重 ...

最新文章

  1. Android开发学习笔记:WebView 一
  2. C++ VS2010 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
  3. flink mysql connector_Flink JDBC Connector:Flink 与数据库集成最佳实践
  4. css实现页面文字不换行、自动换行、强制换行
  5. 克隆需要验证_GeneCopoeia基因克隆
  6. C语言的10大基础算法
  7. 用python批量下载网络图片_python批量下载图片的三种方法
  8. 饭后什么事情正谋杀你的健康
  9. 【译】索引进阶(八):SQL SERVER唯一索引
  10. 为什么火车上的网速都超级慢,并且信号极差?
  11. 文本分类-TextCNN
  12. Nginx防盗链、访问控制、解析php相关配置、Nginx代理
  13. XGBoost和LightGB
  14. tf.transpose函数解析
  15. Ubuntu图形化数据库连接工具
  16. 小米max刷鸿蒙,小米Max刷recovery教程 小米Max第三方recovery下载
  17. 安全secuerity证券
  18. 免费数字证书申请(https)
  19. 佳能MP4视频恢复方法
  20. Linux下面bzero函数学习笔记

热门文章

  1. 深度学习笔记(27) 经典卷积网络
  2. log4j mysql_log4j写入mysql数据库 | 学步园
  3. java 读取硬件设备发送数据_Java网络编程基础
  4. python与材料计算快速入门线上训练营_Python18天训练营第二课基础1
  5. jq 点击按钮跳转到微信_小程序 web-view组件跳转到小程序页面
  6. list mybatis批量保存_springboot2.x基础教程:集成mybatis最佳实践
  7. NOIP2013NOIP2018USACO 三倍经验铺路题巧妙解法
  8. 算法-----python实现
  9. PHP钩子的简单介绍
  10. win32常用文件操作