Как я могу получить и распечатать конкретные данные из запроса 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']))