Python对象转换为json的方法步骤
Python中内置了json库,用起来超级方便,json现在以成为开发的必备。
python对象到json字符串的转换规则:
Python | JSON |
---|---|
dict | object |
list,tuple | array |
str,unicode | string |
int,long,float | number |
True | true |
False | false |
None | null |
json字符串到python对象的转换规则:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number(int) | int,long |
number(real) | float |
trueTrue | |
false | False |
null | None |
json的api有下面4个:
- json.loads()将json转换为dict
- json.dumps()将dict转换为json
- json.load()将json文件转换为dict
- json.dump()将dict转换为json文件person.json
注意:dict也可以是类对象
dict转换为json
importjson person={ 'name':'jack', 'age':15, 'email':'jack@litets.com' } print('dict:',person) person_json=json.dumps(person)#转换为json print('json:',person_json)
输出:
dict:{'name':'jack','age':15,'email':'jack@litets.com'}
json:{"name":"jack","age":15,"email":"jack@litets.com"}
json转换为dict
importjson person_dict=json.loads('{"name":"jack","age":15,"email":"jack@litets.com"}') print('persondict:',person_dict)
输出:
persondict:{'name':'jack','age':15,'email':'jack@litets.com'}
类对象转换为json
importjson classPerson: def__init__(self,name,age,email): self.name=name self.age=age self.email=email person=Person('tom',38,'tom@litets.com') person_json=json.dumps(person.__dict__) print('personjson:',person_json)
输出:
personjson:{"name":"tom","age":38,"email":"tom@litets.com"}
json.dumps()不能直接传递一个对象实例否则回报TypeError:ObjectoftypePersonisnotJSONserializable错误为了避免这个错误,我们需要修改:
importjson classPerson: def__init__(self,name,age,email): self.name=name self.age=age self.email=email #将person转换为dict defconvert2json(person): return{ 'name':person.name, 'age':person.age, 'email':person.email } person=Person('tom',38,'tom@litets.com') #第二个参数传递转换函数,或者使用default=lambdao:o.__dict__ person_json=json.dumps(person,default=convert2json) print('personjson:',person_json)
json转换为类对象
importjson classPerson: def__init__(self,name,age,email): self.name=name self.age=age self.email=email defconvert2json(dict_json): returnPerson(dict_json['name'],dict_json['age'],dict_json['email']) person=json.loads('{"name":"tom","age":38,"email":"tom@litets.com"}',object_hook=convert2json) print('person:',person)
输出:
person:<__main__.Personobjectat0x10a7230b8>
loads函数只能将json转换为字典,需要我们自己转换为对象。
dict/对象转换为json文件
import person={"name":"tom","age":38,"email":"tom@litets.com"} withopen('person.json','w')asf: json.dump(person,f)
当前目录下会多一个person.json文件,内容是:
{"name":"tom","age":38,"email":"tom@litets.com"}
将json文件转换为dict/对象
importjson withopen('person.json','r')asf: print(json.load(f))
输出:
{'name':'tom','age':38,'email':'tom@litets.com'}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。