json значение в python - PullRequest
       4

json значение в python

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

Вот мой код:

import requests
import json 


url = 'https://....'
request = requests.get(url)

request_text = request.text


data = json.loads(request_text)
data_serialized = json.dump(data , open('mainapp.json' ,"w") , indent= 4)

Формат JSON файла:

{
"agent_timeline": [{
        "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
    }
]}

Как я могу получить результаты для определенного агента c? Например, как я могу получить результаты только для идентификатора агента 394903921554?

Ответы [ 3 ]

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

requests имеет встроенную функцию «преобразовать в json», поэтому в моем примере ниже я использую ее. Затем вы можете использовать функцию next(), чтобы найти следующее вхождение агента с указанным вами идентификатором.

import requests

url = 'https://....'
response = requests.get(url)
data = response.json()
agents = [item for item in data['agent_timeline'] if item['agent_id'] == 394903921554]

Изменить: изменен результат, чтобы вернуть несколько агентов, а не только первый.

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

Может быть что-то вроде этого:

data = json.loads(s)
filtered_data = [element for element in data['agent_timeline'] if element['agent_id']==394903921554]
print(filtered_data)

Вывод:

[{'agent_id': 394903921554, 'engagement_count': 0, 'start_time': '2020-06-15T06:00:00.000000Z', 'status': 'invisible', 'duration': 901.929878}, {'agent_id': 394903921554, 'engagement_count': 0, 'start_time': '2020-06-15T06:00:11.000000Z', 'status': 'online', 'duration': 901.929878}]
0 голосов
/ 17 июня 2020

json .loads преобразует json данные в python объекты в соответствии со следующей таблицей из https://docs.python.org/3/library/json.html#json -to-py-table :

object -> dict

array -> list

string -> str

number (int) -> int

number (real) -> float

true -> True

false -> False

null -> None

In В вашем случае у вас был json «объект», поэтому вы можете работать с ним как со словарем python. Следуя структуре json в вашем примере, data["agent_timeline"] предоставит вам список словарей, где каждый элемент является агентом, и вам нужно будет перебирать его, чтобы найти нужный агент c. Например:

for agent in data["agent_timeline"]:
  if agent["agent_id"] == 394903921554:
    print(agent)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...