Как я могу получить и распечатать конкретные данные из запроса json?

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

def rec():
    qe = JsonQ(r"C:\ShopFloor\data.json")
    res = qe.at('data').where('Status', '=', 1).get()
    for Process, Shortnum in res:
        print(Process['Process'] + " " + Shortnum['Shortnum'])

rec()

это из следующего файла JSON:

{
    "data": [
        {
            "Shortnum": "34567",
            "Process": "SPA",
            "Status": 1,
            "Start_Time": "2016-12-14 15:54:35",
            "Finish_Time": "2016-12-14 15:56:02"
        },
        {
            "Shortnum": "34567",
            "Process": "Figure",
            "Status": 0,
            "Start_Time": "2016-12-08 15:34:05",
            "Finish_Time": "2016-12-08 15:34:09"
        },

Как я могу заставить это работать должным образом? В идеале я ищу такой ответ от печати:

SPA 34567

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

Exception has occurred: ValueError
too many values to unpack (expected 2)
  File "C:\ShopFloor\main.py", line 101, in rec
    for Process, Shortnum in res:
  File "C:\ShopFloor\main.py", line 106, in <module>
    rec()

1 ответ

Решение

Типичный подход к работе с JSON в Python заключается в загрузке объекта JSON как Python. dict:

import json
with open('C:/ShopFloor/data.json', 'r') as f:
    qe = json.load(f)
for item in qe['data']:
    if item['Status'] == 1:
        print(f'{item["Process"]} {item["Shortnum"]}')

Обратите внимание, что здесь используются f-строки Python 3 (при обращении к значениям словаря в f-строке чередуйте одинарные и двойные кавычки). В Python 2 замените последнюю строку на:

        print('{} {}'.format(item['Process'], item['Shortnum']))
Другие вопросы по тегам