本文分享自华为云社区《从零开始学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 jsonpeople_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 jsonpeople_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 jsonpeople_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 pd pd.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 pdimport json with open(r'C:UsersHarshit_KantDesktopnobel.prize.json') as f:   data = json.load(f)print (data) df = pd.DataFrame print(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 jsonpeople_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 json with 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 json with 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的解析,序列化和反序列化无关的所有概念感到分明。

点击关注,第一工夫理解华为云陈腐技术~