按字母顺序加载JSON文件

2024-05-16 09:40:10 发布

您现在位置:Python中文网/ 问答频道 /正文

使用此方法:

def postcodes(request):
    with open('core/stores.json') as f:
        data = json.load(f)
        return JsonResponse(data, safe=False)

我将本地json文件加载到此url中:

urlpatterns = [
    path('stores/', views.postcodes, name='postcodes'),
]

它完美地呈现了,现在,我的json文件如下所示:

[
{
    "name": "St_Albans",
    "postcode": "AL1 2RJ"
},
{
    "name": "Hatfield",
    "postcode": "AL9 5JP"
},
{
    "name": "Worthing",
    "postcode": "BN14 9GB"
},

等等。。。你知道吗

如你所见,如果你考虑到邮政编码,这是按字母顺序排列的。你知道吗

我需要的是读取这个文件,并按字母顺序呈现,但不是按原样呈现(按postcode),而是按name。你知道吗

我不认为我可以使用内置的Django循环或标记来实现这一点,因为它们主要用于模型或存储的数据。你知道吗

但我不完全确定。你知道吗

有什么方法能比将所有内容保存到数据库中更快呢?你知道吗

我查看了serializers,但那是django-rest-framework,我在这里使用的是普通的requests。你知道吗

有什么想法吗?你知道吗

我现在不使用任何模板,它只是在浏览器上呈现的。你知道吗


Tags: 文件方法namecorejsondatarequestdef
1条回答
网友
1楼 · 发布于 2024-05-16 09:40:10

您可以使用.sort(..)对列表排序:

import json
from operator import itemgetter

def postcodes(request):
    with open('core/stores.json') as f:
        data = json.load(f)
    data.sort(key=itemgetter('name'))
    return JsonResponse(data, safe=False)

然后将内容呈现为:

[
    {"name": "Hatfield", "postcode": "AL9 5JP"},
    {"name": "St_Albans", "postcode": "AL1 2RJ"},
    {"name": "Worthing", "postcode": "BN14 9GB"}
]

请注意,如果您希望始终按字母顺序获取邮政编码,则最好只按该顺序对stores.json文件进行排序。你知道吗

相关问题 更多 >