脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python读写JSON文件的操作详解

Python读写JSON文件的操作详解

2022-11-27 13:45Mr数据杨 Python

JSON数据类型最常用的应用场景就是API或将数据保存到 .json稳当数据中。使用Python处理这些数据会变得非常简单,本文将详细讲解Python如何读写JSON文件的,需要的可以参考一下

JSON

JSON 起源

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

JSON 样例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
     "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文件的操作详解

引用方式。

?
1
import json

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

序列化 JSON

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

Python JSON
dict object
list,tuple array
str string
int, long,float number
True true
False false
None null

简单的序列化示例

创建一个简单的数据。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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"
      }
    ]
}

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

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

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

?
1
json_str = json.dumps(data)

JSON 反序列化

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

JSON Python
object dict
array list
string str
number(整数) int
number(浮点数) float
true True
false False
null None

简单的反序列化示例

读取写入json文件的数据。

?
1
2
with open("data_file.json", "r") as read_file:
    data = json.load(read_file)

字符串数据。

?
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
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)

应用案例

通过互联网的数据抓取解析文本信息。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 秦皇岛煤炭网微博
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)

Python读写JSON文件的操作详解

编码和解码

自定义数据。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 的错误就需要自定义编码和解码了。

?
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import json
 
class 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的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/qq_20288327/article/details/124115125

延伸 · 阅读

精彩推荐
  • Python用Python生成N层的杨辉三角的实现方法

    用Python生成N层的杨辉三角的实现方法

    这篇文章主要介绍了用Python生成N层的杨辉三角的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    少年龙龙9732021-10-15
  • PythonPython实现windows下模拟按键和鼠标点击的方法

    Python实现windows下模拟按键和鼠标点击的方法

    这篇文章主要介绍了Python实现windows下模拟按键和鼠标点击的方法,涉及Python模拟实现鼠标及键盘事件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    liuli31112019-11-27
  • Python如何利用python查找电脑文件

    如何利用python查找电脑文件

    利用python查找电脑里的文件非常方便,首先是导入模块os,然后利用os.listdir()打开目录下的所有文件,files其实是一个列表。具体操作方法大家参考下本文...

    脚本之家9452021-02-07
  • Pythonpython对列进行平移变换的方法(shift)

    python对列进行平移变换的方法(shift)

    今天小编就为大家分享一篇python对列进行平移变换的方法(shift),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    芒萝6562021-05-14
  • Pythonpython正则表达式(re模块)的使用详解

    python正则表达式(re模块)的使用详解

    正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,下面这篇文章主要给大家介绍了关于python正则表...

    nee~4712022-10-21
  • Pythonpython 通过xml获取测试节点和属性的实例

    python 通过xml获取测试节点和属性的实例

    下面小编就为大家分享一篇python 通过xml获取测试节点和属性的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    丢丢是一只喵9482021-01-26
  • PythonPyTorch学习:动态图和静态图的例子

    PyTorch学习:动态图和静态图的例子

    今天小编就为大家分享一篇PyTorch学习:动态图和静态图的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    有点方5792020-05-07
  • Pythonpython实现用户管理系统

    python实现用户管理系统

    这篇文章主要为大家详细介绍了python实现用户管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    诸葛来了也照烧24282021-01-03