如何检查JSON格式验证?

我的程序获取一个包含服务信息的
JSON文件.

在运行服务程序之前,我想检查JSON文件是否为valide(仅检查是否存在所有必需的密钥).

以下是此程序的标准(必要数据)JSON格式:

{
    "service" : "Some Service Name"
    "customer" : {
        "lastName" : "Kim",
        "firstName" : "Bingbong",
        "age" : "99",
    }
}

现在我正在检查JSON文件验证,如下所示:

import json

def is_valid(json_file):

    json_data = json.load(open('data.json'))

    if json_data.get('service') == None:
        return False
    if json_data.get('customer').get('lastName') == None:
        return False
    if json_data.get('customer').get('firstName') == None:
        return False
    if json_data.get('customer').get('age') == None:
        return False

    return True

实际上,JSON标准格式有20多个密钥.有没有其他方法来检查JSON格式?

最佳答案 您可以考虑使用
jsonschema来验证您的JSON.这是一个验证您的示例的程序.要将其扩展到“20个键”,请将键名添加到“必需”列表中.

import jsonschema
import json

schema = {
    "type": "object",
    "customer": {
        "type": "object",
        "required": ["lastName", "firstName", "age"]},
    "required": ["service", "customer"]
}

json_document = '''{
    "service" : "Some Service Name",
    "customer" : {
        "lastName" : "Kim",
        "firstName" : "Bingbong",
        "age" : "99"
    }
}'''

try:
    # Read in the JSON document
    datum = json.loads(json_document)
    # And validate the result
    jsonschema.validate(datum, schema)
except jsonschema.exceptions.ValidationError as e:
    print("well-formed but invalid JSON:", e)
except json.decoder.JSONDecodeError as e:
    print("poorly-formed text, not JSON:", e)

资源:

> https://pypi.python.org/pypi/jsonschema
> http://json-schema.org/example1.html

点赞