在 django 的 postgres db 中将 json 保存为数组

Posted

技术标签:

【中文标题】在 django 的 postgres db 中将 json 保存为数组【英文标题】:save json as array in postgres db in django 【发布时间】:2021-02-23 04:56:08 【问题描述】:

我遇到了无法处理的问题。我有一个 JSON 文件,其中包含一些酒店数据,例如房间、名称、城市等。其中一些字段包含多个数据,并用“|”分隔,如下所示:

  "image_urls": "//imghtlak.mmtcdn.com/images/hotels/201512081111224987/exterior.jpg|//imghtlak.mmtcdn.com/images/hotels/201512081111224987/room.jpg|//imghtlak.mmtcdn.com/images/hotels/201512081111224987/download.jpg",

或者喜欢这个:

   "highlight_value": "1 lift|24 hour business centre|24 hour coffee shop|24 hour reception|24 hour room service|24 hour security|24 hours front desk|24-hour business center|24-Hour Front Desk|24-hr Coffee Shop|24/7 Power|Activities desk|Activity centre|Airport Transfer Available With Charges Rs.200/- Per Trip|Arrangements Of Kitty Parties & Birthday Party|Auditorium|Ballroom|Banqueting|Bar|Board Room|Boardroom|Breakfast buffet|Children's Playground|Doctor on Call|Dry Cleaning|Dry Cleaning Service|Dry cleaning/laundry service|Free garage parking|Free Parking|Free Wi-Fi|Free Wi-Fi Icon|Handicap Facilities|Hot tub|In-room safe (some rooms)|Laundry Service|Newspaper|Non-smoking rooms|Room Service|Room service (24 hours)|Room Service (24 Hours)(after 11:00pm.round The Clock Menu)|Room Service 24 Hrs|Room Service 6 Am - 12 Night|Room Service 7 Am To 9 Pm|Room Service 7am-11:30pm|Room Service, 24 Hour Reception|Room Service, 24 Hour Reception And Laundry Service|Room Services 7 Am To 9 Pm|Wake up call|Wheelchair access"

我想将它们分开保存在 postgres db 中作为数组,我有 django 项目,我的前端同事告诉我它应该是数组,他可以使用它们并显示它们,我是数据库中的新手,我不知道如何做到这一点我的意思是如何将它们排列在一个字段中,以便他可以使用它们并对其进行排序。 抱歉英语不好 顺便说一下,这是 JSON 文件: This is full JSON file

【问题讨论】:

str.split 应该会有所帮助。 【参考方案1】:

据我了解,您可以使用以下内容:

my_values = [
    
        "highlight_value": "1 lift|24 hour business centre|24 hour coffee shop"
    
]

new_items = []

for my_value in my_values:
    for values in my_value.values():
        if '|' in values:
            tokens = values.split('|')

            # REST OF CODE

或者,像这样:

elements = [
    values.split('|') 
        for my_value in my_values 
            for values in my_value.values() if '|' in values
]

【讨论】:

以上是关于在 django 的 postgres db 中将 json 保存为数组的主要内容,如果未能解决你的问题,请参考以下文章

Django 和 postgres - 在模型字段中将数据存储为 json 的缺点

django中所有URL的编程错误,postgres在db中找不到表?

Django ORM 在 Postgres DB 上留下空闲连接

尝试使用 django 从 postgres DB 中按顺序获取下一个值

Django 测试因 InternalError 失败:没有这样的保存点。 DB:Postgres,通过 mysql

在 Postgres DB 中使用大量 id 的 Django 查询过滤器