【python模块】python解析json文件详解

这篇具有很好参考价值的文章主要介绍了【python模块】python解析json文件详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是json文件

JSON(Java Script Object Notation)是一种通常用于以不会“对系统造成负担”的方式传输数据(主要通过 API)的格式。基本原理是利用文本来记录数据点,并将数据点传输给第三方。

JSON是一种使用文本存储数据对象的格式。换句话说,它是一种数据结构,将对象用文本形式表示出来。尽管它来源自JavaScript,但它已成为传输对象的实际标准。
大多数流行的编程语言都支持JSON格式,包括Python。JSON格式的文件经常用于API传输数据对象。以下是JSON字符串的示例:

{
   "name": "United States",
   "population": 331002651,
   "capital": "Washington D.C.",
   "languages": [
  "English",
  "Spanish"
   ]
}

在这个例子中,JSON数据看起来像一个Python字典。像字典一样,JSON以键值对的形式传递数据。然而,JSON数据也可以是字符串、数字、布尔值或列表。

在JSON流行之前,XML一直是以文本格式表示数据对象的常见选择。以下是XML格式的相同信息的示例:

<?xml version="1.0" encoding="UTF-8"?>
<country>
   <name>United States</name>
   <population>331002651</population>
   <capital>Washington D.C.</capital>
   <languages>
       <language>English</language>
       <language>Spanish</language>
   </languages>
</country>

很明显,JSON代码量更少。这是JSON如此流行的主要原因之一。

JSON建构于两种结构:
json是Javascript中的对象和数组中的对象,本质上来讲就是有特定结构的字符串,所以可以通过这两种结构可以表示各种复杂的结构:

  • 1 对象: 对象在js中表示为”{}”括起来的内容,数据结构为{key:value, key:value…}的键值对结构,在面向对象的语言中,key为对象的属性,value为对应属性的值,所以很容易去理解。属性值value可以为:数字、字符串、数组、对象等。
  • 2 数组:数组在js中是中括号“[]”括起来的内容,数据结构为[“java”, “javascript”, “vb”….] 取值方式和所有语言一样,使用索引获取,字段值的类型是:数字、字符串、数组、对象等

简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比”名称 / 值对”更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

如果你还不了解 JSON,可以先阅读 JSON 教程。

二、常用接口

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,主要包含了下面4个操作函数:
【python模块】python解析json文件详解
提示:所谓类文件对象指那些具有read()或者 write()方法的对象,例如,f = open(‘a.txt’,‘r’),其中的f有read()方法,所以f就是类文件对象。

Python的JSON模块有四个主要功能:read(),reads(),load(),和loads()。这些功能常常会让人混淆。最重要的地方是字母“s”代表String。另外,在函数loads()和dumps()中的字母“s”需要分开读,即loads读load-s,dumps()读dump-s。

这是一个快速表格,可帮助您记住这些功能:
【python模块】python解析json文件详解

  • 一般loads用于读取JSON字符串,而load()用于读取文件中的JSON数据。
    load()方法接收一个文件对象并返回解析为Python对象的JSON数据。
  • 用于编写JSON文件的方法是dump().这种方法与dumps()方法非常相似。唯一的区别是dumps()返回一个字符串,dump()写入一个文件。

类型转化

在json的编解码过程中,python 的原始类型与JSON类型会相互转换,具体的转化对照如下:

  • Python 编码为 JSON 类型转换对应表:
    【python模块】python解析json文件详解
  • JSON 解码为 Python 类型转换对应表:
    【python模块】python解析json文件详解

三、代码示例

详细内容可阅读 blog文章来源地址https://www.toymoban.com/news/detail-478211.html

import json
 
data = {
    'name': 'pengjunlee',
    'age': 32,
    'vip': True,
    'address': {'province': 'GuangDong', 'city': 'ShenZhen'}
}
# 1. 将 Python字典类型 转换为 JSON对象
json_str = json.dumps(data)
print(json_str) # 结果 {"name": "pengjunlee", "age": 32, "vip": true, "address": {"province": "GuangDong", "city": "ShenZhen"}}
 
# 2. 将 JSON对象类型 转换为 Python字典
user_dic = json.loads(json_str)
print(user_dic['address']) # 结果 {'province': 'GuangDong', 'city': 'ShenZhen'}
print(user_dic.keys())
 
# 3. 将 Python字典 直接输出到 文件
with open('pengjunlee.json', 'w', encoding='utf-8') as f:
    json.dump(user_dic, f, ensure_ascii=False, indent=4) # 缩进4个空格
 
# 4. 将 类文件对象中的JSON字符串 直接转换成 Python字典
with open('pengjunlee.json', 'r', encoding='utf-8') as f:
    ret_dic = json.load(f)
    print(type(ret_dic)) # 结果 <class 'dict'>
    print(ret_dic['name']) # 结果 pengjunlee
  • 使用eval()能够实现简单的字符串和Python类型的转化。
user1 = eval('{"name":"pengjunlee"}')
print(user1['name']) # 结果 pengjunlee

到了这里,关于【python模块】python解析json文件详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python3.11教程3:模块和包(pip/conda)、文件系统(os/ shutil/json/pickle/openpyxl/xlrd)

    本文相关链接: Python官网、Python 3.11.5 中文文档、慕课:Python语言程序设计、Real Python :Write More Pythonic Code Miniconda、Anaconda、conda文档 Python 标准库官方文档、 《os — 多种操作系统接口》、《os.path — 常用路径操作》、《shutil — 高阶文件操作》 Pandas文档《Input/output》、 op

    2024年02月09日
    浏览(53)
  • Python 从零开始制作自己的声音 - wave模块读写wav文件详解

    计算机经常被用于处理音频这种真实世界中的数据。声音经过采样,量化和编码后,存储在音频文件,如wav文件中。 文章首先介绍wave模块的基础用法; 再通过生成一定频率声波的算法实现,来深入讲解wave库的使用。 wave 模块提供了一个处理 wav 声音格式的便利接口, 可获取

    2023年04月09日
    浏览(41)
  • 什么是Java中的JSON解析和生成?

    首先,我们来解释一下JSON是什么。简单来说,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于解析和生成。在Java中,我们有很多种方式来实现JSON解析和生成。接下来,我们来看一下代码示例吧! 首先,我们来看一下JSON解析。假设我

    2024年02月15日
    浏览(42)
  • Unity解析json文件(分为json与jsonArray)

    什么是json? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度, 那么,JSON到底是什么? JSON就是一串字符串 只不过元素会使用特定的符号标注。 {} 双括号表示对象 [] 中括号表示数组 “” 双引号内是

    2024年02月08日
    浏览(42)
  • 常用python代码大全-python使用json模块处理JSON数据

    在Python中, json 模块提供了一种简单的方法来编码和解码JSON数据。以下是一个简单的例子,说明如何使用 json 模块来处理JSON数据。 首先,我们需要导入 json 模块: 编码(Encode)JSON 数据 要将Python对象编码为JSON格式,我们可以使用 json.dumps() 函数。这个函数将Python对象转换为

    2024年01月20日
    浏览(62)
  • python标准库模块,json

    展示了如何使用json模块进行编码和解码操作的常规示例: json模块简介 json 模块是Python中的一个编码和解码JSON格式的轻量级模块,主要用于将Python对象编码为JSON格式输出或存储,以及将JSON格式对象解码为Python对象。 一、概览 常量、类或方法名 注解 json.dump 方法,传入一个

    2024年02月16日
    浏览(37)
  • 在 ES 模块(Node.js)中导入 JSON 文件

    Node.js 文档建议使用 fs 模块并自己完成读取文件和解析的工作。 这种方法比起我们接下来用的第二种方法更容易理解。 我们还可以使用 createRequire 加载 JSON 文件。 createRequire 允许您构造 CommonJS require 方法,以便可以使用典型的 CommonJS 功能,例如在 Node.js 中读取 JSON ES 模块。

    2024年02月06日
    浏览(32)
  • 【C++】使用 nlohmann 解析 json 文件

    nlohman json GitHub - nlohmann/json: JSON for Modern C++ 是一个为现代C++(C++11)设计的JSON解析库,主要特点是 易于集成,仅需一个头文件,无需安装依赖 易于使用,可以和STL无缝对接,使用体验近似python中的json 1. json初始化 1.1 从文件初始化 1.2 从字符串初始化 方式1 R表示json字符串中

    2024年02月10日
    浏览(38)
  • Spark解析JSON文件,写入hdfs

    一、用Sparkcontext读入文件,map逐行用Gson解析,输出转成一个caseclass类,填充各字段,输出。 解析JSON这里没有什么问题。 RDD覆盖写的时候碰到了一些问题 : 1.直接saveAsTextFile没有覆盖true参数; 2.转dataframe时,还得一个一个字段显化才能转成dataframe; 3.write时,一开始打算写

    2024年01月23日
    浏览(41)
  • python 常用内置模块之 json

    当处理 JSON 数据时,Python 中的 json 模块提供了四个主要的函数:dump、dumps、load 和 loads。这些函数提供了在 JSON 数据和 Python 对象之间进行转换和序列化的功能。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于将数据从一个应用程序传输到另一个应用程序

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包