Найдите значение в JSON, используя python - PullRequest
0 голосов
/ 17 июня 2020

У меня json файл содержит:. Как я могу вернуть только результаты для agent_id 394903921554

enter code here

{"agent_timeline": [{"agent_id": 394903921554, "impact_count": 0, "start_time": "2020-06-15T06: 00 : 00.000000Z "," status ":" invisible "," duration ": 901.929878}, {" agent_id ": 397330457313, "ence_count": 0, "start_time": "2020-06-15T06: 00: 00.000000Z", "status": "invisible", "duration": 901.929878}, {"agent_id": 401565578994, "deal_count": 0, "start_time": "2020-06-15T06: 00: 00.000000Z", "status": " invisible "," duration ": 4.664595}, {" agent_id ": 394903921554, "ence_count": 0, "start_time": "2020-06-15T06: 00: 11.000000Z", "status": "online", "duration ": 901.929878}]}

Ответы [ 4 ]

1 голос
/ 17 июня 2020

Предположим, вы назначаете полный результат json переменной с именем results, тогда вы можете фильтровать его просто следующим образом.

filtered = filter(lambda x: x['agent_id'] == 394903921554, results)
for item in filtered:
    print(item)

Это даст вам генератор.

1 голос
/ 17 июня 2020

Я предполагаю, что в файле крайняя скобка - квадратная скобка ([]), в противном случае это недопустимый файл json.

Вы можете читать с помощью:

import json
with open(FILENAME, "r") as f: 
    r = json.load(f)

Затем вы получите список json объектов. Оттуда вы можете просто выполнить простой фильтр, чтобы получить нужную информацию:

result = [x for x in r if x["agent_id"] == 394903921554]
result = result[0] if result else None

Последняя строка позаботится о случае, когда agent_id отсутствует в файле.

0 голосов
/ 17 июня 2020

Попробуйте следующее:

import json

# load json from file, and covert to a Python object, in this case, a list of dictionaries
with open('my_file.json') as fp:
  lst = json.load(fp)

# use built-in filter() method to filter the list
matches = filter(lambda o: o["agent_id"] == 394903921554, lst)

# grab your dictionary
obj = next(matches)

Обратите внимание, что ваш текст недействителен json - если это список, он должен быть окружен '[]'

0 голосов
/ 17 июня 2020

Предполагая, что структура представляет собой массив в формате:

x = [
 {
    "agent_id": 394903921554,
    "engagement_count": 0,
    "start_time": "2020-06-15T06:00:00.000000Z",
    "status": "invisible",
    "duration": 901.929878
},
{
    "agent_id": 397330457313,
    "engagement_count": 0,
    "start_time": "2020-06-15T06:00:00.000000Z",
    "status": "invisible",
    "duration": 901.929878
},
{
    "agent_id": 401565578994,
    "engagement_count": 0,
    "start_time": "2020-06-15T06:00:00.000000Z",
    "status": "invisible",
    "duration": 4.664595
},
{
    "agent_id": 394903921554,
    "engagement_count": 0,
    "start_time": "2020-06-15T06:00:11.000000Z",
    "status": "online",
    "duration": 901.929878
    }
 ]

Вы можете сделать следующее:

[item for item in x if item['agent_id'] == 394903921554]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...