文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python怎么读写JSON文件

2023-06-30 01:16

关注

本篇内容介绍了“Python怎么读写JSON文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

JSON

JSON 起源

JSON 全称 JavaScript Object Notation 。是处理对象文字语法的 JavaScript 编程语言的一个子集。JSON 早已成为与语言无关的语言,并作为自己的标准存在。

JSON 样例

{ "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"  }]}

Python 原生支持 JSON

Python 带有一个内置包 json,用于对 JSON 数据进行编码和解码。

Python怎么读写JSON文件

引用方式。

import json

JSON 编码的过程通常称为序列化。该术语是指将数据转换为一系列字节通过网络存储或传输。反序列化是解码以 JSON 标准存储或交付的数据的交互过程。

序列化 JSON

直观的转换将简单的 Python 对象转换为 JSON。

PythonJSON
dictobject
list,tuplearray
strstring
int, long,floatnumber
Truetrue
Falsefalse
Nonenull

简单的序列化示例

创建一个简单的数据。

data =   { "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"  }]}

数据直接以文本方式保存。

with open("data_file.json", "w") as f:    json.dump(data, f)

数据直接以字符串方式使用。

json_str = json.dumps(data)

JSON 反序列化

在 json 库中使用 load() 和 oads() 用于将 JSON 编码数据转换为 Python 对象。

JSONPython
objectdict
arraylist
stringstr
number(整数)int
number(浮点数)float
trueTrue
falseFalse
nullNone

简单的反序列化示例

读取写入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 requestsfrom bs4 import BeautifulSoupimport datetimeurl = "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 jsonfor 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)

Python怎么读写JSON文件

编码和解码

自定义数据。

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 = nameself.roll_no = roll_noself.address = addressdef 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 = cityself.street = streetself.pin = pinaddress = 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文件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯