3 回答

TA貢獻1951條經驗 獲得超3個贊
如果有人仍在尋找答案,這就是它的完成方法
(cast(Values.value, db.String())=='"Employee"'))
以上是存儲在 JSONB 列中的字符串。請注意該過濾器中使用的引號。
(Values.value.contains([{"type":"examplecom"}]))
這個用于在 JSONB 列中搜索 JSON 數組

TA貢獻1797條經驗 獲得超6個贊
假設json對象是一個字符串,使用json.loads將其轉換為字典,然后正常索引。
>>> import json
>>> s = """[{"primary": true, "type": "work", "value": "[email protected]"}, {"primary": true, "type": "work", "value": "[email protected]"}]"""
>>> my_dict = json.loads(s)
>>> my_dict[0]['type']
'work'
然后,您可以使用以下列表理解來搜索 type == 起作用的任何行。
>>> search = [i for i in my_dict if i['type'] == 'work']
>>> search
[{'primary': True, 'type': 'work', 'value': '[email protected]'}, {'primary': True, 'type': 'work', 'value': '[email protected]'}]
這是一個不使用列表理解的相同事物的示例。
>>> search = list()
>>> for i in my_dict:
... if i['type'] == 'work':
... search.append(i)
...
>>> search
[{'primary': True, 'type': 'work', 'value': '[email protected]'}, {'primary': True, 'type': 'work', 'value': '[email protected]'}]

TA貢獻1852條經驗 獲得超7個贊
我無法測試代碼,但你可以嘗試一下。
l = .filter(User_Values.value)
s = [[x for x in i if x['type'].astext=='work'] for i in l if isinstance(i, list)]
如果可以向我提供創建表的代碼,我可以進行測試以提供更好的答案。如果這不是您想要的,請提前抱歉。
添加回答
舉報