首页 > 解决方案 > 需要使用示例静态 JSON 验证和验证脚本生成的结果 JSON 是否正确

问题描述

我有一个脚本,它生成 JSON(values将分配给预定义keys)作为输出并将其上传到云端。我需要编写一个例程作为测试脚本来验证JSONvalues的正确位置key。如果测试脚本结果True只需要继续上传结果到云端。

下面我将分享一个预定义的示例 JSON,它将充当测试脚本的主干,需要将脚本的输出与示例 JSON 进行比较。

{
   "first_name":"",
   "last_name":"",
   "age":"",
   "dob":"",
   "address":[
      {
         "address1":"",
         "address2":""
      }
   ],
   "mobile":"",
   "telephone":"",
   "education":[
       {
          "primary_education":"",
          "seconday_education":"",
          "high_school":"",
          "university":""
       }
   ],
   "work_experience":[
       {
          "company_name":"",
          "company_address":"",
          "position":"",
          "joined_date":"",
          "resigned_date":""
       },
       {
          "company_name":"",
          "company_address":"",
          "position":"",
          "joined_date":"",
          "resigned_date":""
       }
   ]
}

在我的脑海中,我正在努力编写算法/测试脚本以在 python 中完成这项任务。请帮我解决这个问题。我被这个问题困扰了好几天,我来堆栈溢出以寻求一个好的解决方案

标签: pythonjsonpython-3.xalgorithmdictionary

解决方案


jsonschema软件包可能提供了您希望明智地进行验证的所有内容。https://pypi.org/project/jsonschema/

致电:

jsonschema.validate(instance=my_json_text, schema=schema_text)

会告诉你是否有“好” my_json_text

举个简单的例子,您schema_text可能是:

{
    "type" : "object",

    "required" : [
        "ID",
        "name",
        "url"
    ],

    "properties" : {
        "ID" : {"type" : "string", "minLength" : 1},
        "name" : {"type" : "string", "minLength" : 10},
        "url" : {"type" : "string", "minLength" : 20}
    }
}

这表示根元素具有某些必需的字段,此外,这些字段必须具有某种类型和一定的长度。模式验证支持嵌套的 json 和数组以及 bool 等。我们经常使用它来验证从 graphql 端点返回的复杂数据,用于测试和数据处理,作为我们管道更密集阶段之前的健全性检查。这个小例子只是“冰山一角”,但应该给你一个想法。


推荐阅读