定制化开发【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"   ]}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这个例子中,JSON数据看起来像一个。像字典一样,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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

很明显,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,可以先阅读 。

二、常用接口

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,主要包含了下面4个操作函数:

提示:所谓类文件对象指那些具有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。

这是一个快速表格,可帮助您记住这些功能:

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

类型转化

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

  • Python 编码为 JSON 类型转换对应表:
  • JSON 解码为 Python 类型转换对应表:

三、代码示例

详细内容可阅读

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 使用eval()能够实现简单的字符串和Python类型的转化。
user1 = eval('{"name":"pengjunlee"}')print(user1['name']) # 结果 pengjunlee
  • 1
  • 2
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发