0

是否可以使用 Python 将 JSON 从服务器发送到我的 iOS 应用程序?

这样的事情是如何实现的?

(Django 或 Flask 都可以)

我在网上搜索过,但只找到了 PHP 教程。


我曾尝试返回 JSON,但它不起作用 - 或者至少它从未发送到应用程序

4

4 回答 4

1

对于烧瓶,您可以使用jsonify

from flask import jsonify

@app.route("/index/", methods=['GET'])
def index():
    return jsonify(result=result)
于 2013-02-17T05:55:47.173 回答
1

基本前提是您的客户端应用程序向 URL 发送请求,服务器以 JSON 响应。

如何创建 JSON 文档并不重要。您可以使用任何语言(甚至是 javascript)来生成 JSON 并将其发回。

对于 django 有sweetpiedjango-rest活塞

对于烧瓶,您可以使用flask-restful。这是一个完整的例子

无论您使用哪个库,工作流程都将如下所示:

  1. 您的应用程序向 URL 发出请求
  2. 您的服务器应用程序(使用上述任何框架编写)拦截此请求。
  3. JSON 文档由您的服务器应用程序生成,并作为响应发回。
  4. 您的客户端应用程序读取 JSON 并显示它。

现在,如果您想实现REST API,那么您可以扩展上述内容以允许来自客户端应用程序的操作。例如,特制请求可以添加新记录、删除记录或查询记录子集。但是,如果您只想将 JSON 文档发送回您的应用程序,则不需要这样做。

于 2013-02-17T05:42:19.657 回答
0

从 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})
于 2013-02-17T09:43:58.077 回答
0

如果您使用 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)
于 2013-02-17T08:13:22.937 回答