Проверка данных JSON с использованием Python - PullRequest
0 голосов
/ 02 февраля 2019

Я довольно новичок в python, не могли бы вы мне помочь?Кажется, это действительно тривиальный вопрос.Мне нужно создать функцию, которая проверяет входящие данные JSON и возвращает Python dict.Он должен проверить наличие всех необходимых полей в файле json, а также проверить типы данных этих полей.Мне нужно использовать try-catch.Не могли бы вы предоставить какие-нибудь фрагменты или примеры, которые дают мне ответы?

Ответы [ 3 ]

0 голосов
/ 02 февраля 2019

Поскольку вы используете файл JSON, вы можете использовать этот пример:

import json
def validate(filename):
    with open(filename) as file:
        try:
            return json.load(file) # put JSON-data to a variable
        except JSONDecodeError:
            print("Invalid JSON") # in case json is invalid
        else:
            print("Valid JSON") # in case json is valid
0 голосов
/ 02 февраля 2019

Если вы не проверяли библиотеку jsonschema , это может быть полезно для проверки данных. Схема JSON - это способ описания содержимого JSON.Библиотека просто использует формат для проверки на основе заданной схемы.

Я сделал простой пример из базового использования.

import json
from jsonschema import validate

# Describe what kind of json you expect.
schema = {
    "type" : "object",
    "properties" : {
        "description" : {"type" : "string"},
        "status" : {"type" : "boolean"},
        "value_a" : {"type" : "number"},
        "value_b" : {"type" : "number"},
    },
}

# Convert json to python object.
my_json = json.loads('{"description": "Hello world!", "status": true, "value_a": 1, "value_b": 3.14}')

# Validate will raise exception if given json is not
# what is described in schema.
validate(instance=my_json, schema=schema)

# print for debug
print(my_json)
0 голосов
/ 02 февраля 2019

Начните с модуля json.Он может загружать строку json в словарь Python, автоматически конвертируя строковые, целочисленные / float и логические значения в их эквивалентные типы Python.Например:

>>> import json
>>> my_json_string = '{"description": "Hello world!", "status": true, "value_a": 1, "value_b": 3.14}'
>>> data = json.loads(my_json_string)
print(data)
{'description': 'Hello world!', 'status': True, 'value_a': 1, 'value_b': 3.14}

Помимо этого, если вам нужно проверить определенные типы данных или значения, вам необходимо проверить свои данные.Вы можете использовать isinstance для проверки типов, например, isinstance(data['value_a'], int) вернет True, так как оно соответствует целочисленному типу.

Я не вижу нигде, вам нужно использовать здесь try / catch и делатьтак было бы намеренно писать код, чтобы «принудительно» использовать его - например, использовать утверждения для создания исключений, если результат не соответствует ожидаемому.Это не похоже на хорошую практику, поэтому я оставлю это вам, если вы сможете предоставить больше информации о том, чего вы пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...