Python json

JSON表示出来是一串字符串,可以被所有语言读取,也可以方便存储和传输

 JSON表示的对象就是JavaScript语言的对象

JSON和Python 数据类型对应

JSON类型Python类型
{} dict
[] list
"string" str
1234.56 int或float
true/false True/False
null None

 

把Python对象变成JSON字符串:json.dumps()

d = dict(name='sandy', age=20, score=18)
print(json.dumps(d))

==》{"name": "sandy", "age": 20, "score": 18}

 

把Python对象编程JSON字符串,并写入到文件: json.dump()

path = 'D:\\test.txt'
with open(path, 'w') as f:
json.dump(d, f)

 

 

 Python的dict对象可以直接序列化为JSON对象,但是如果是class对象, 不能直接序列化成JSON字符串,需要一些转换:

可以写一个函数来实现,返回值是JSON的字符串,如:

def stu2dict(std):
return{
'name': std.name,
'age': std.age,
'score': std.score
}

也可以调用class的dict属性:

json.dumps(s, default=lambda obj: obj.__dict__)   # s是实例化的对象

 

class Student(object):
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
def stu2dict(std):
return{
'name': std.name,
'age': std.age,
'score': std.score
}
s = Student('sandy', 12, 80)
print(json.dumps(s, default=stu2dict)) # {"name": "sandy", "age": 12, "score": 80}
print(json.dumps(s, default=lambda obj: obj.__dict__)) # {"name": "sandy", "age": 12, "score": 80}

对中文进行序列化的时候,参数 ensure_ascii=False

print(json.dumps('中国', ensure_ascii=True))  # 输出"\u4e2d\u56fd"
print(json.dumps('中国', ensure_ascii=False)) # 输出"中国"

 

posted on 2018-03-21 16:03  永恒自由森林  阅读(281)  评论(0编辑  收藏  举报

导航