Python - пропустить ключ, если он не существует в массиве json - PullRequest
0 голосов
/ 28 мая 2020

У меня есть большой массив json, в котором перечислены определенные пары значений ключа. Каждый элемент в массиве должен выглядеть следующим образом:

{
   "id" : "tmp3269879718695646867",
   "owner" : "johndoe",
   "x11-display" : ":7",
   "x11-authority" : "/run/user/1676/dcv/tmp3269879718695646867.xauth",
   "num-of-connections" : 0,
   "creation-time" : "2019-05-15T20:05:46.170274Z",
   "last-disconnection-time" : "2019-07-19T15:14:37.349168Z"
 },

Затем я прикрепляю начальную квадратную скобку и конечную квадратную скобку в конце, чтобы сделать его действительным JSON. Иногда в массиве около 100 элементов. Из-за обновления программного обеспечения, если пользователь не отключился, то ключ времени последнего отключения не отображается на этом выходе. Я хочу сделать l oop для каждого элемента в массиве, но пропустить весь элемент, если ключ времени последнего отключения не существует. Это то, что у меня есть в l oop:

for item in json_array:
        session_details = {"owner":None, "num-of-connections":None, "last-disconnection-time":None}
        session_details['owner'] = item['owner']
        user = item['owner']
        session_details['num-of-connections'] = item['num-of-connections']
        session_details['last-disconnection-time'] = item['last-disconnection-time']
        # Format date
        ...

. Я бы хотел проверять элемент каждый раз, когда он зацикливается. Примерно так:

for item in json_array:
        session_details = {"owner":None, "num-of-connections":None, "last-disconnection-time":None}
        session_details['owner'] = item['owner']
        user = item['owner']
        session_details['num-of-connections'] = item['num-of-connections']
        if "last-disconnection-time" in json_array:
                session_details['last-disconnection-time'] = item['last-disconnection-time']
        else:
                print("last-disconnection-time does not exist in this array item")
        # Format date
        ...

Однако я все равно получаю KeyError при запуске скрипта.

1 Ответ

1 голос
/ 28 мая 2020

Вам необходимо проверить, есть ли в элементе «время последнего отключения». json_array - это весь ваш список. item - это словарь, в котором вы хотите узнать, существует ли ключ.

if "last-disconnection-time" in item:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...