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'}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。