Python3 Json 数据解析

Python3 Json 数据解析

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,易于阅读和编写。
Python3 中可以使用json模块来对JSON数据进行编码,它包含了两个函数:

  • json.dumps():对数据进行编码,将Python 对象编码成JSON字符串。
  • json.loads():对数据进行解码,将已编码的JSON字符串解码为Python对象

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

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

Python JSON
dict object
list,tuple array
str string
int,float,int- & float-derived Enums number
True true
False false
None null

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

JSON Python
object dict
array list
string str
number(int) int
number(real) float
true True
false False
null None

json.dumps 与json.loads实例

  1. Python 数据结构转换为JSON
#! _*_ coding _*_
#! /usr/bin/python3

import json

# Python 字典类型转换为JSON对象
data = {
    'no':1,
    'name':'weiliang',
    'age': 24
}

json_str = json.dumps(data)
# repr()函数将对象转化为解释器读取的形式,返回一个对象的string格式
print("Python 原始数据:", repr(data))
print("JSON 对象:", json_str)

输出结果为:

Python 原始数据: {'name': 'weiliang', 'no': 1, 'age': 24}
JSON 对象: {"name": "weiliang", "no": 1, "age": 24}

简单类型通过编码后跟其原始的repr()输出结果非常相似
使用参数让JSON数据格式化输出:

import json
print(json.dumps({'name':'weiliang','age':24},sort_keys=True, indent=4, separators=(',', ':')))

输出为:

{
    "age":24,
    "name":"weiliang"
}
  1. 将一个JSON编码的字符串转换为一个Python数据结构:
# 将JSON 对象转换为Python字典
data2 = json.loads(json_str)
print("data2['name']:",data2['name'])
print("data2['age']:",data2['age'])

输出结果为:

data2['name']: weiliang
data2['age']: 24

还可以使用 json.dump()json.load() 来编码和解码JSON数据。例如

# 写入 JSON 数据
with open('data.json','w') as f:
    json.dump(data,f)

# 读取数据
with open('data.json','r') as f:
    data = json.load(f)

使用第三方库: Demjson

Demjson 是python 的第三方模块库,可用于编码和解码JSON数据,包含JSONLint的格式化及校验功能。
Github地址:https://github.com/dmeranda/demjson
官方地址:http://deron.meranda.us/python/demjson/

https://www.w3cschool.cn/python3/python3-json.html
https://docs.python.org/3/library/json.html

你可能感兴趣的:(python)