gpt4 book ai didi

file - 如何从另一个文件中获取 json 模式?

转载 作者:行者123 更新时间:2023-12-04 21:16:00 25 4
gpt4 key购买 nike

我想知道如何从其他文件中获取 json 模式。

假设我有两个文件,放在同一个目录中:

文件 1:person.json

{
"id":"#person",
"name": {"type":"string"},
"age": {"type":"number"},
"address": {
"type":"object",
"properties": {
"number": {"type":"number"},
"street": {"type":"string"},
"city": {"type":"string"}
}
}
}

文件 2:company.json
{
"id":"#company",
"name": {"type":"string"},
"employees": {
"type":"array",
"items" {"$ref":"person.json"}
}
}

正如您所观察到的,“员工”应该是一组“人”。问题是我不知道如何引用“人”模式,因为它在不同的文件中。

我知道这可能是一个简单的问题,并且可能已经有关于此的答案,但我已经研究了很多,但我不明白这是如何完成的。

编辑 1

我正在使用 Tiny Validator 4 (tv4)用于模式验证。我还使用 QUnit 来测试模式是否正常工作。

下面,我将向您展示一个测试,其中地址编号应为数字类型时为 bool 值。模式验证,当它不应该。
asyncTest("invalid type for adress number", function() {
expect(1);
var jsonObject = {
name: 'Computers Inc',
employees: [
{
name: 'John',
age: 29,
address: {
number: 9,
street: 'Oak Street',
city: 'London'
}
},
{
name: 'Mike',
age: 35,
address: {
number: true,
street: 'Big Avenue',
city: 'London'
}
}
]
};

// Gets the JSON Schema
$.getJSON('json_schemas/company.json', function(response) {
var jsonSchema = response;
console.log(jsonSchema);

// Verifies the validity of the JSON object
var valid = tv4.validate(jsonObject, jsonSchema);
ok(!valid, "Not valid because Mike's number is a boolean.");
start();
});
});

看了一会儿,我认为是“$.getJSON”搞砸了。 “console.log(jsonSchema)”显示获取的架构不包括人员部分。获取的架构正是来自“company.json”文件的架构。

编辑 2

我认为它是这样工作的。 :)
asyncTest("invalid type for address number", function() {
expect(1);
var jsonObject = {
name: 'Computers Inc',
employees: [
{
name: 'John',
age: 29,
address: {
number: 9,
street: 'Oak Street',
city: 'London'
}
},
{
name: 'Mike',
age: 35,
address: {
number: false,
street: 'Big Avenue',
city: 'London'
}
}
]
};

tv4.asyncValidate(jsonObject, 'json_schemas/company.json', function(valid) {
ok(!valid, printMessage(valid));
start();
});
});

最佳答案

您的模式看起来应该可以工作 - 所以我的猜测是您没有正确地将模式加载到验证器中。

tv4 (您显然正在使用),您应该能够使用 "missing" 查看是否缺少任何模式。您的结果的属性。

var result = tv4.validateMultiple(data, schema);
console.log(result.missing); // ['/json_schemas/missing-schema']

要解决此问题,您需要将您需要的任何架构加载到 tv4 中。验证前:
tv4.addSchema('/json_schemas/missing-schema', ...)

还有一个示例脚本添加了 tv4.asyncValidate(data, schema, callback)方法,它使用 jQuery 获取丢失的模式并重试,这可能对您有用。

关于file - 如何从另一个文件中获取 json 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23539367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com