摘要:您知道如何从在线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 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 pd
import 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 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 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的解析,序列化和反序列化有关的所有概念感到清楚。

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

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

从零开始学python | 什么是Python JSON?的更多相关文章

  1. 从零开始学Python网络爬虫PDF高清完整版免费下载|百度网盘

    百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...

  2. 如何从零开始学Python?会玩游戏就行,在玩的过程就能掌握编程

    现在学习编程的人很多,尤其是python编程,都列入高考了,而且因为人工智能时代的到来,编程也将是一门越来越重要的技能. 但是怎么从零开始学python比较好呢?其实,你会玩游戏就行. 从零基础开始教 ...

  3. python之感知器-从零开始学深度学习

    感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...

  4. 《Python 3.5从零开始学》笔记-第8章 面向对象编程

    前几章包括开启python之旅.列表和元组.字符串.字典.条件和循环等语句.函数等基本操作.主要对后面几章比较深入的内容记录笔记. 第8章 面向对象编程 8.3深入类 #!/usr/local/bin ...

  5. 从零开始学python之Python安装和环境配置

    Python 3适用于Windows,Mac OS和大多数Linux操作系统.即使Python 2目前可用于许多其他操作系统,有部分系统Python 3还没有提供支持或者支持了但被它们在系统上删除了, ...

  6. 【转】python 历险记(四)— python 中常用的 json 操作

    [转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...

  7. python 历险记(四)— python 中常用的 json 操作

    目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编码和解码? 常用的 json 操作有哪些? json 操作需要什么库? 如何 ...

  8. python 数据序列化(json、pickle、shelve)

    本来要查一下json系列化自定义对象的一个问题,然后发现这篇博客(https://www.cnblogs.com/yyds/p/6563608.html)很全面,感谢作者,关于python序列化的知识 ...

  9. python 序列化 pickle shelve json configparser

    1. 什么是序列化 我们把变量从内存中变成可存储或传输的过程称之为序列化. 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重新读到内存里称 ...

  10. python入门灵魂5问--python学习路线,python教程,python学哪些,python怎么学,python学到什么程度

    一.python入门简介 对于刚接触python编程或者想学习python自动化的人来说,基本都会有以下python入门灵魂5问--python学习路线,python教程,python学哪些,pyth ...

随机推荐

  1. mysql出现10061错误解决方法

    首先要关闭MYSQL服务 关闭你现在正在运行的mysql数据库,用结束mysql进程或者直接关闭mysql服务器都可以 1.开始菜单->运行(cmd)->寻径到MySQL文件中的bin目录 ...

  2. Python 面向对象编程:类、对象、初始化和方法详解

    Python 是一种面向对象的编程语言.在 Python 中,几乎所有东西都是对象,都具有其属性和方法. 类似于对象构造函数或用于创建对象的"蓝图"的类. 创建一个类 要创建一个类 ...

  3. 将.View.dll文件反编译出来的*Views*.cs文件转换成.cshtml

    先使用反编译工具将.View.dll文件反编译放入文件夹,然后将文件夹整体复制进\src\viewcs2cshtml\viewcs2cshtml\bin\Debug\net6.0\viewcs 复制完 ...

  4. xxl-job默认accessToken命令执行漏洞复现

    起因: 昨天看见微步发布XXL-JOB默认accessToken身份绕过漏洞,之前hw期间遇到过几次,都没弱口令和未授权,对其有点印象,遂复现一下. 漏洞影响:2.3.1和2.4 环境准备: 1.下载 ...

  5. [Python急救站课程]叠加等边三角形的绘制

    叠加等边三角形的绘制 from turtle import * penup() fd(-100) pendown() pensize(10) seth(60) fd(200) seth(-60) fd ...

  6. 解决Pycharm运行成功,但无法生成:pytest-html报告

    不生成报告的原因: 用户习惯:使用者习惯于单独执行测试文件.py,调试测试用例: 而编辑器为了方便用户执行测试用例,变调用python test来执行测试用例,这种情况下,执行的只是用例或者套件,不是 ...

  7. 【Flutter】一文读懂混入类Mixin

    [Flutter]一文读懂混入类Mixin 基本介绍 Mixin是一种有利于代码复用,又避免了多继承的解决方案. Mixin 是面向对象程序设计语言中的类,提供了方法的实现,其他类可以访问 Mixin ...

  8. 栈与队列应用:迷宫问题(DFS非最短路径)

    //先输入行列,在输入迷宫 以-1 -1 结束 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 #define ...

  9. null 不好,我真的推荐你使用 Optional

    "Null 很糟糕." - Doug Lea. Doug Lea 是一位美国的计算机科学家,他是 Java 平台的并发和集合框架的主要设计者之一.他在 2014 年的一篇文章中说过 ...

  10. JAVA中的函数接口,你都用过吗

    公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 在这篇文章中,我们将通过示例来学习 Java 函数式接口. 函数式接口的特点 只包含一个抽象方法的接口称为函数式接口. 它 ...