我正在以一种特定的格式创建一个JSON文件,所以我想在进一步处理之前验证它是否是这种格式。
{
"dev":{
"username": "",
"script": "",
"params": ""
},
"qat":{
"username": "",
"script": "",
"params": ""
},
}
这和预期的一样工作,但是只是想检查一下是否有更好更简单的方法来解决这个问题
代码:
def test_param_file():
with open('../utils/param_template.json') as json_data:
template = json.load(json_data)
with open('/file.json') as json_data:
param_file = json.load(json_data)
assert _get_all_keys(param_file) == _get_all_keys(template)
def _get_all_keys(param):
global prefix
global keys
keys = []
def func(param):
for key, value in param.iteritems():
if type(value) == dict:
global prefix
prefix = key
func(value)
global keys
keys.append("%s.%s" % (prefix, key))
func(param)
return list(set(keys))
既然您正在寻找一种更简单/更好的方法,我建议您使用Marshmallow来进行这种验证。这里有一个非常粗略的例子:
from marshmallow import Schema, fields
class EnviornmentSchema(Schema):
username = fields.Str(required=True)
scripts = fields.Str(required=True)
params = fields.Str(required=True)
errors = EnviornmentSchema().validate(file_contents_dict)
基本上,它将您的“模板”系统替换为模式类。您也可以使用嵌套,因为您有多个环境dict。当您需要进行更高级的验证时,Marshmallow会变得非常有用。
我正在使用Swagger生成Restful API: 这个API接受json字符串并从中生成java对象。这在一个例外情况下运行良好:API接受任何正确格式的json字符串,但忽略json的内容,这意味着我得到一个使用默认值创建的对象。 所以我的问题是:在生成实际的java对象之前,如何验证传入的jsonstring(针对json模式)?
问题内容: 我正在尝试使用Jackson JSON接受一个字符串,并确定它是否为有效JSON。谁能建议要使用的代码示例(Java)? 问题答案: 不知道您的用例是什么,但是应该这样做:
我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根
问题内容: 是否有任何PHP库可根据JSON模式验证JSON对象? 问题答案: 关于jsonschemaphpv,尽管它维护得不是很好,但是我们经常使用它并且可以正常工作。这是js验证程序的端口。它具有针对php和http://code.google.com/p/jsonschema/的完整测试套件。 猜猜是什么…它比js传递了更多的测试。至少在最后一次运行测试时。问题是该项目的结构不是很好,而且
问题内容: 我正在为返回JSON对象的Java Web应用程序编写一些验收测试。我想验证返回的JSON是否针对架构进行了验证。有人可以为此建议任何工具吗? 问题答案: 该 JSON工具项目 (程序员指南)包括验证使用JSON模式的JSON文件的内容的工具。 另一种选择是使用Rhino验证运行(JavaScript) JSON Schema Validator 。
我对根据JSON模式验证JSON文档不感兴趣。我想验证JSON模式本身,检查它是否针对特定草案有效。是否有工具Java可以验证模式本身?