在Python中进行JSON转化

序列化,指的是把内存中的变量(如类的实例)变成可存储或可传输的过程。

JSON(JavaScript Object Notation, JavaScript对象表示)是网络传输中经常使用的一种数据形式。

在Python中,经常将字典转化成JSON来发送,使用的主要方法为dumps:

import json

data = {'name':'nick',
            'age':12}
data_json = json.dumps(data)

注意以下几点:

1.data_json为转换后的JavaScript对象,在JavaScript对象里,key值默认为字符串格式

2.data_json中的key的顺序与data中的顺序不保证相同

3.data还可以是str,list,tuple,int等其他类型,这时也会对data进行相应的转化

4.data_json的数据类型为str

将JSON格式的数据转化为Python中的dict时,应使用loads:

data = json.loads(data_json)

这时,data中所有的字符串默认均为unicode,因为JSON标准规定的编码为UTF-8

注意:对于文件的JSON处理,应使用dump,load

要想JSON化类的实例,应在dumps中指定可选参数default,如:

def func(obj):

 

def foo(obj):
    return {'name':obj.name,
                'age':obj.age}        

 

此后使用 data_json = json.dumps(s, default = foo) 即可序列化类的实例s

更简便的方法是:

json.dumps(s, default = lambda x: x.__dict__)

要得到JSON反序列化的类的实例,可使用loads的object_hook参数:

def bar(obj):
    return Person(obj['name'], d['age'])

c = json.loads(data_json, object_hook = bar)

此时得到的c为Person类的一个实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值