python基础编程之Json 序列化与反序列化

序列化与反序列化

在JSON库中,序列化和反序列化的处理分为两部分,一部分是对具体列表数据的处理,另外一部分是对文件内容的处理。

 

json.dumps

将Python的数据类型比如元组,字典,列表数据转化为字符串类型。

 

import json

def test_dumps():
    """
    序列化操作
    """
    list = [1,2,3,4,5]
    print('before',type(list))
    list_str = json.dumps(list)
    print('after',type(list_str), list_str,)

    dict = {'username':'xiaoming','age':10}
    print('before',type(dict))
    dict_str = json.dumps(dict)
    print('after',type(dict_str),dict_str)


    tuple = (1,2,3,4)
    print('before',type(tuple))
    tuple_str = json.dumps(tuple)
    print('after',type(tuple_str),tuple_str) #[1,2,3,4] 

 

元组类型数据转换后的字符串形式为 [] 。

json.loads

反序列化操作,将字符串类型转化为python的列表,字典类型。

注意:不能反序列化为元组类型。

 

def test_loads():
    """
    反序列化
    """
    list_str = '[1,2,3,4,5,6]'
    list = json.loads(list_str)
    print('list:',type(list),list)

    tuple_0 = ("5","4","3","2","1")
    tuple_str = json.dumps(tuple_0)
    tuple = json.loads(tuple_str)
    print('after tuple:',type(tuple),tuple) #元组序列化之后返回列表类型

 

 

json.dump

序列化Json数据并存储到文件中。

 

import requests
import json

def test_dump():
    """
    json.dump 将json数据 存入到文件中
    :return:
    """
    r = requests.get(url='http://39.107.96.138:3000/api/v1/topics')
    # dump
    json.dump(r.json(),open('data.json',mode='w+'))

 

json.load

从文件中读取数据并反序列化为python数据格式。

data.json

 

{
  "success": true,
  "data": [
    {
      "id": "5e66e7c31a33065b8763dc0d",
      "author_id": "5d67af5c692231084ca27cd0",
      "tab": "share",
      "create_at": "2020-03-10T01:05:07.410Z",
      "author": {
        "loginname": "user8",
        "avatar_url": "//gravatar.com/avatar/d6e3a97ea77c3cc3fe9493150f349088?size=48"
      }
    }
  ]
}

读取data.json数据并转换为python格式

 

import requests
import json

def test_load():
    data = open('./data.json',mode='r',encoding='utf8')
    d = json.load(data)
    print('d:',type(d),d)

 

json数据与python数据类型转换

默认情况下,执行以下方式转换数据

JSON

Python

object

dict

array

list

string

str

number (int)

int

number (real)

float

true

True

false

False

null

None

 

 

【附录】https://docs.python.org/zh-cn/3/library/json.html

posted @ 2020-03-21 21:08  吃个鱼丸  阅读(105)  评论(0)    收藏  举报