2015-09-12 2 views
-2

Не могли бы вы помочь мне? Я получил ответ с данными json и хотел бы проверить не только структуру json, но и некоторые значения внутри. Данные json представлены встроенными типами python (dict, list, str, ...). Не могли бы вы посоветовать простой способ проверить данные внутри какого-либо произвольного json в python?Проверить значения внутри json-данных

Для примера возьмем следующие JSON:

{"employees":[ 
    {"firstName":"John", "lastName":"Doe"}, 
    {"firstName":"Anna", "lastName":"Smith"}, 
    {"firstName":"Peter", "lastName":"Jones"} 
]} 

Я хотел бы проверить, что ответы есть 3 элементов в списках сотрудников с определенными значениями в ПгвЬЫате и LastName.

Я понимаю, что если я JSon как питон Словарь я могу проверить любое значение внутри просто делать:

data["employees"][0]["firstName"] == ??? 

Может быть, в этом простом случае это не большая проблема. Но в моем случае у меня есть ответы со сложными структурами, где интересные (мне) данные глубоко внутри в разных местах. Трудно написать что-то вроде данных ['a'] ['b'] [0] ['c'] [1] для каждого значения, которое должно быть проверено ... есть лучший способ проверить данные внутри комплекса json ?

+0

JSON декодирует тип Python, да. Вам нужно будет предоставить нам образец структуры и ваш код, чтобы показать, где вы застряли, но все, что у вас есть, это словари, списки, числа, строки и логические значения. Возможно, и объекты «Нет». Обычные способы их устранения, неважно, что структура данных была получена от JSON. –

+0

Вы просмотрели модуль ['json'] (https://docs.python.org/3/library/json.html)? – MattDMo

+0

Да, модуль json позволяет анализировать json, но мне нужно что-то еще - проверьте данные внутри разбора json. –

ответ

-2

Если вы хотите, чтобы убедиться, что у вас есть 3 элемента в списке сотрудников с конкретным ПгвЬЫатом вы можете использовать функцию check_json_data здесь https://github.com/mlyundin/check-json-data

data = {"employees":[ 
{"firstName":"John", "lastName":"Doe"}, 
{"firstName":"Anna", "lastName":"Smith"}, 
{"firstName":"Peter", "lastName":"Jones"} 
]} 

exp_data = {"employees": list_verifier([{"firstName":"John"}, 
    {"firstName": "Anna"}, 
    {"firstName": "Peter"}], 
linker=lambda item1, item2, i1, i2:item1['firstName'] == item2['firstName'], strict=True)} 

print check_json_data(exp_data, data) 
+0

Хорошо. Спасибо. Я рассмотрю это как одно из возможных решений. –

Смежные вопросы