我如何遍历json文件并在Django中将其作为HttpRespones返回?

时间:2019-07-28 02:45:02

标签: python json django jsonresponse

我的Django项目的静态文件夹中有一个json文件。我想返回每个数据的所有“ id”和“ title”。

我的json文件中有这些数据。

    {"results": [
        {"id": "1", "movie_title": "COCO","cast":["cast1","cast2"]},
        {"id": "2", "movie_title": "THOR","cast":["cast1","cast2"]},
        {"id": "3", "movie_title": "IRONMAN","cast":["cast1","cast2"]}]}

我有这段代码可以从json文件返回所有数据。

    def polls(request):

        ROOT_FILE = STATIC_ROOT + '/polls/coming_soon.json'

        json_data = open(ROOT_FILE)
        json_load = json.load(json_data)

        return HttpResponse(json.dumps(json_load))

例如,我只想获取某些特定值,例如“ id”,“ title”。但是,当我尝试从json_load中获取结果时,它仅返回文件中第一项的值。这是我的代码。

    for r in json_load['results']:
        return HttpResponse(r['id'] + r['movie_title')

但是此代码仅返回第一个数据,如下所示:

   1 COCO

我想这样回来:

   1 COCO
   2 THOR
   3 IRONMAN

谢谢。

2 个答案:

答案 0 :(得分:0)

您尝试过吗?

iter_response = ["{} {}".format(r['id'], r['movie_title']) for r in json_load['results']]
result_response = "/n".join(iter_response)
return HttpResponse(result_response)

答案 1 :(得分:0)

一种简单的解决方法是将其添加到列表中。

json_data =  {"results": [
        {"id": "1", "movie_title": "COCO","cast":["cast1","cast2"]},
        {"id": "2", "movie_title": "THOR","cast":["cast1","cast2"]},
        {"id": "3", "movie_title": "IRONMAN","cast":["cast1","cast2"]}]}

list1 = list()
def function1():
        for r in json_data["results"]:
                list1.append(r['id'] + ' '+  r['movie_title'])

function1()

for i in list1:
        print(i)

# outputs

1 COCO
2 THOR
3 IRONMAN

之所以只得到1 COCO是因为您只返回了1个查询