是否可以使用 Python 将 JSON 从服务器发送到我的 iOS 应用程序?
这样的事情是如何实现的?
(Django 或 Flask 都可以)
我在网上搜索过,但只找到了 PHP 教程。
我曾尝试返回 JSON,但它不起作用 - 或者至少它从未发送到应用程序
对于烧瓶,您可以使用jsonify
from flask import jsonify
@app.route("/index/", methods=['GET'])
def index():
return jsonify(result=result)
基本前提是您的客户端应用程序向 URL 发送请求,服务器以 JSON 响应。
如何创建 JSON 文档并不重要。您可以使用任何语言(甚至是 javascript)来生成 JSON 并将其发回。
对于 django 有sweetpie、django-rest和活塞。
对于烧瓶,您可以使用flask-restful。这是一个完整的例子。
无论您使用哪个库,工作流程都将如下所示:
现在,如果您想实现REST API,那么您可以扩展上述内容以允许来自客户端应用程序的操作。例如,特制请求可以添加新记录、删除记录或查询记录子集。但是,如果您只想将 JSON 文档发送回您的应用程序,则不需要这样做。
从 django 服务器返回 JSON 的示例:
from django.http import HttpResponse, HttpResponseNotFound
class JsonResponse(HttpResponse):
def __init__(self, content, **kwargs):
kwargs['content_type'] = 'application/json'
super(JsonResponse, self).__init__(json.dumps(content), **kwargs)
class JsonDataResponse(HttpResponse):
"""
Returns a json dumped dict with fields 'message' and 'data'.
"""
def __init__(self, *args, **kwargs):
message = None
data = None
if len(args) > 0:
message = args[0]
if len(args) > 1:
data = args[1]
if 'message' in kwargs:
message = kwargs['message']
kwargs.pop('message')
if 'data' in kwargs:
data = kwargs['data']
kwargs.pop('data')
kwargs['content'] = json.dumps(dict(message=message, data=data))
if 'content_type' not in kwargs:
kwargs['content_type'] = 'application/json'
super(JsonDataResponse, self).__init__(**kwargs)
在视图的返回中使用上面定义的类:
from place.of.your.definition import JsonResponse
def example_view(request):
number_of_foo = Foo.objects.filter(...)
...
return JsonResponse({'number_of_foo': number_of_foo})
如果您使用 django,以下可能会有所帮助:
#views.py
import json
from django.http import HttpResponse
def jsonview(request):
...
return HttpResponse(json.dumps(result), mimetype='application/json')
最好还是直接使用json而不是使用
from django.core.serializers import serialize
serialize('json', result) #instead of json.dumps(result)