python读json文件和写json文件,python 读json
JSON数据类型最常见的应用场景是API或将数据保存到。json稳定数据。使用Python处理这些数据将非常简单。本文将详细讲解Python如何读写JSON文件,供参考。
目录
JSONJSON origin JSON示例Python原生支持JSON序列化JSON简单序列化示例JSON反序列化简单反序列化示例应用案例编码和解码
JSON
JSON 起源
JSON JavaScript对象符号。是处理对象文字语法的JavaScript编程语言的子集。JSON长期以来一直是一种独立于语言的语言,并作为自己的标准存在。
JSON 样例
{
数据 :[
{
id: 1 :
姓名 : 同学甲,
州 : 1 :
创建时间 : 2020-01-21
},
{
id: 2 :
姓名 : B同学B :
州 : 1 :
创建时间 : 2020-01-21
},
{
id: 3 :
姓名 : 丙同学丙:
州 : 0 ,
创建时间 : 2020-01-21
}
]
}
Python 原生支持 JSON
Python自带了一个内置的包json,用来对JSON数据进行编码和解码。
引用方法。
导入json
对JSON进行编码的过程通常被称为序列化。该术语指的是将数据转换成一系列字节,然后通过网络存储或传输。反序列化是解码以JSON标准存储或传递的数据的交互式过程。
序列化 JSON
直观转换将简单的Python对象转换成JSON。
PythonJSONdictobjectlist,tuplearraystrstringint,long,floatnumbertruetruefalsafalsonenull
简单的序列化示例
创建一个简单数据。
数据={
数据 :[
{
id: 1 :
姓名 : 同学甲,
州 : 1 :
创建时间 : 2020-01-21
},
{
id: 2 :
姓名 : B同学B :
州 : 1 :
创建时间 : 2020-01-21
},
{
id: 3 :
姓名 : 丙同学丙:
州 : 0 ,
创建时间 : 2020-01-21
}
]
}
数据直接保存为文本。
用open(data_file.json , w )作为f:
json.du
mp(data, f)
数据直接以字符串方式使用。
json_str = json.dumps(data)
JSON 反序列化
在 json 库中使用 load() 和 oads() 用于将 JSON 编码数据转换为 Python 对象。
简单的反序列化示例
读取写入json文件的数据。
with open("data_file.json", "r") as read_file:data = json.load(read_file)
字符串数据。
json_string = """{
"data":[
{
"id": "1",
"name": "A同学",
"state": "1",
"createTime": "2020-01-21"
},
{
"id": "2",
"name": "B同学",
"state": "1",
"createTime": "2020-01-21"
},
{
"id": "3",
"name": "C同学",
"state": "0",
"createTime": "2020-01-21"
}
]
}
"""
data = json.loads(json_string)
应用案例
通过互联网的数据抓取解析文本信息。
# 秦皇岛煤炭网微博import requests
from bs4 import BeautifulSoup
import datetime
url = "http://news.cqcoal.com/manage/newsaction.do?method:webListPageNewsArchivesByTypeid"
post_param = {pageNum:1,pageSize:20,jsonStr:{"typeid":"238"}}
return_data = requests.post(url,data =post_param)
return_data = return_data.content.decode("utf-8")
import json
for i in json.loads(return_data)["rows"]:
title = i["title"]
url = "http://news.cqcoal.com/blank/nc.jsp?mid="+str(i["id"])
timeStamp=int(i["pubdate"])
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
date = dateArray.strftime("%Y-%m-%d")
print(title,url,date)
编码和解码
自定义数据。
import json# 基础的数字字典
py_object = {"c": 0, "b": 0, "a": 0}
# JSON 编码
json_string = json.dumps(py_object)
print(json_string)
print(type(json_string))
{"c": 0, "b": 0, "a": 0}
<class str>
# JSON 解码
py_obj = json.loads(json_string)
print(py_obj)
print(type(py_obj))
{c: 0, b: 0, a: 0}
<class dict>
如果遇到TypeError: Object of type SampleClass is not JSON serializable的错误就需要自定义编码和解码了。
import jsonclass Student:
def __init__(self, name, roll_no, address):
self.name = name
self.roll_no = roll_no
self.address = address
def to_json(self):
将此类的实例转换为 json
return json.dumps(self, indent = 4, default=lambda o: o.__dict__)
class Address:
def __init__(self, city, street, pin):
self.city = city
self.street = street
self.pin = pin
address = Address("Bulandshahr", "Adarsh Nagar", "203001")
student = Student("Raju", 53, address)
# 编码
student_json = student.to_json()
print(student_json)
print(type(student_json))
{
"name": "Raju",
"roll_no": 53,
"address": {
"city": "Bulandshahr",
"street": "Adarsh Nagar",
"pin": "203001"
}
}
<class str>
# 解码
student = json.loads(student_json)
print(student)
print(type(student))
{name: Raju, roll_no: 53, address: {city: Bulandshahr, street: Adarsh Nagar, pin: 203001}}
<class dict>
以上就是Python读写JSON文件的操作详解的详细内容,更多关于Python读写JSON的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。