温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python怎么读写JSON文件

发布时间:2022-04-12 15:21:53 来源:亿速云 阅读:349 作者:iii 栏目:开发技术

本篇内容介绍了“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 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文件

    编码和解码

    自定义数据。

    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 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文件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI