Skip to main content
 首页 » 编程设计

android之Flask REST API 响应 JSONArray

2024年10月25日38zhoujg

我使用 Flask 为 Android 应用程序创建了一个简单的 REST API。我在实现 GET 方法时遇到问题。它应该以 JSONArray 的形式返回所有记录。响应看起来像他的

{ 
    "tasks": [{ 
               "task" : "Do it", 
               "timestamp": 1433510946152 
              },{..} 
             ], 
    "success": 1 
} 

我的任务模型是这样的

class Task(db.Model):    
    id = db.Column(db.Integer, primary_key=True) 
    task= db.Column(db.Text, nullable=False) 
    timestamp = db.Column(db.Integer, nullable=False) 
 
    @staticmethod 
    def newest(): 
        return Task.query.order_by(desc(Task.timestamp)) 
 
    def to_json(self): 
        return dict(id=self.id, 
                    task= self.task, 
                    timestamp = self.timestamp) 

to_json() 方法将结果转换为 JSON。我只是不知道如何正确使用它。我如何将所有记录放入 JSONArray 中?这是我获取所有任务的方法。我也在使用 Flask paginate,所以 tasks 是一个分页对象。

def get_tasks():     
 
    page = request.args.get('page') 
    if page is not None: 
        try: 
            page = int(request.args.get('page')) 
        except: 
            return jsonify({'result': 'Invalid parameter'}) 
    else: 
        page = 1 
    tasks= models.Task.newest().paginate(page, 7, True) 
 
    #How do I return the tasks in an appropriate format? 

如有任何帮助,我们将不胜感激。谢谢。

请您参考如下方法:

只需遍历您的任务,使用您的to_json 将它们转换为json 并将它们存储在一个数组中。例如:

def get_tasks():     
 
    page = request.args.get('page') 
    if page is not None: 
        try: 
            page = int(request.args.get('page')) 
        except: 
            return jsonify({'result': 'Invalid parameter'}) 
    else: 
        page = 1 
    tasks= models.Task.newest().paginate(page, 7, True) 
    # This list will hold all your tasks in JSON format 
    jsontasks = [] 
    # Since tasks is a pagination object, you should use tasks.items 
    for task in tasks.items: 
        jsontasks.append(task.to_json()) 
    #How do I return the tasks in an appropriate format? Like this.. 
    return jsonify({'tasks': jsontasks, 'success': 1})