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": "rusr@r.com"}, {"primary": true, "type": "work", "value": "iu@n.com"}]"""
>>> 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': 'rusr@r.com'}, {'primary': True, 'type': 'work', 'value': 'iu@n.com'}]
这是一个不使用列表理解的相同事物的示例。
>>> search = list()
>>> for i in my_dict:
... if i['type'] == 'work':
... search.append(i)
...
>>> search
[{'primary': True, 'type': 'work', 'value': 'rusr@r.com'}, {'primary': True, 'type': 'work', 'value': 'iu@n.com'}]
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)]
如果可以向我提供创建表的代码,我可以进行测试以提供更好的答案。如果这不是您想要的,请提前抱歉。
添加回答
举报