完整攻略:
在使用Python编写Web接口的时候,常常需要返回数据,而json是最常用的一种数据格式。可以使用Python自带的json包来处理json数据。Python可以将json字符串转换成对象,也可以将对象转换成json格式字符串。
下面简单讲解一下Python中如何处理json数据。
- 将Python的字典转换成json字符串
使用Python自带的json包中的dumps()函数可以将python字典转换成json字符串
import json
data = {"name": "apple", "color": "red", "price": 2.5}
json_str = json.dumps(data)
print(json_str)
输出结果:{"name":"apple","color":"red","price":2.5}
- 将json字符串转换成Python对象
使用Python自带的json包中的loads()函数可以将json字符串转换成Python对象
import json
json_str = '{"name":"apple","color":"red","price":2.5}'
data = json.loads(json_str)
print(data)
输出结果:{'name': 'apple', 'color': 'red', 'price': 2.5}
- 在Web接口中返回json数据
在Web接口中,可以使用Python的Flask框架来编写Web服务代码。可以使用Flask框架中的jsonify()函数来返回json数据。jsonify()函数的参数为需要返回的数据,可以是一个字典类型数据。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/json_data', methods=['GET'])
def get_json_data():
data = {"name": "apple", "color": "red", "price": 2.5}
return jsonify(data)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=True)
使用浏览器访问http://localhost:8080/json_data,可以看到返回的json数据为:
{"name":"apple","color":"red","price":2.5}
- 对特定类对象进行json序列化
对于自定义的一些类,需要用json序列化进行转换,需要使用json.dumps()转换为python字典,然后通过覆写特殊方法的方式实现转换为json对象。
import json
class User:
def __init__(self, name, mail):
self.name = name
self.mail = mail
def __repr__(self):
return self.__dict__
def toJSON(self):
return json.dumps(self, default=lambda obj: obj.__dict__)
user = User('John', 'john@example.com')
json_data = user.toJSON()
print(json_data)
输出结果:"{"name": "John", "mail": "john@example.com"}"
- 对特定类对象进行json反序列化
对于特定类对象,需要进行反序列化,同样需要使用json.loads()函数。
import json
class User:
def __init__(self, name, mail):
self.name = name
self.mail = mail
def __repr__(self):
return self.__dict__
def toJSON(self):
return json.dumps(self, default=lambda obj: obj.__dict__)
json_data = '{"name": "John", "mail": "john@example.com"}'
user = json.loads(json_data, object_hook=lambda d: User(**d))
print(user)
输出结果:{'name': 'John', 'mail': 'john@example.com'}
以上就是Python中处理json数据的基本方法以及在Web接口中返回json数据的方法。
示例1:将Python字典数据转换成json字符串
import json
dict_data = {
"name": "张三",
"age": 20,
"email": "zhansan@163.com"
}
json_data = json.dumps(dict_data, ensure_ascii=False)
print(json_data)
输出结果:{"name":"张三","age":20,"email":"zhansan@163.com"}
示例2:将json字符串转换成Python对象
import json
json_data = '{"name":"李四","age":22,"email":"lisi@163.com"}'
dict_data = json.loads(json_data)
print(dict_data)
输出结果:{'name': '李四', 'age': 22, 'email': 'lisi@163.com'}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 接口返回的json字符串实例 - Python技术站