我有以下两种模式:
A.json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type":"object",
"properties":
{
"ArgumentChoice":{
"type" : "array",
"items" : {"$ref" : "B.json"}
}
}
}
B.json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title" : "ArgumentChoiceType",
"type":"object",
"properties":{
"ArgumentInt" : {
"type" : "object",
"properties":{
"Value":{
"type" : "integer"
}
}
},
"ArgumentString" : {
"type" : "object",
"properties":{
"Value":{
"type" : "string"
}
}
}
}
}
以下是针对A.json验证的json请求:
{
"ArgumentChoice" : [
{
"ArgumentInt" : {
"Value" : 1
}
},
{
"ArgumentString" :
{
"Name" : "JOB_NAME",
"Value" : "test"
}
}
]
}
我的问题是,当我将ArgumentInt
的值作为字符串传递时,它会失败,因为它接受整数值,我可以在报告消息中看到它。
但是,当我将ArgumentString
的值作为整数传递时,它仍然会失败,但我在消息中看不到由于输入了错误的类型而导致失败。
我想只有ArgumentChoice
中的第一个数组元素才会针对模式进行验证,因为如果ArgumentString
位于ArgumentInt
ArgumentString
上且function addKeypress() {
var lines = 16;
elem.on('keypress', function(e) {
var newLines = elem.val().split("\n").length;
if(e.keyCode == 13 && newLines >= lines) {
return false;
}
});
});
}
中的值类型错误,则会失败。
我做错了吗?
答案 0 :(得分:1)
我创建了A.json和B.json的组合模式以在线测试。 我也能得到第二种情况的错误信息。
组合架构
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"ArgumentChoice": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ArgumentInt": {
"type": "object",
"properties": {
"Value": {
"type": "integer"
}
}
},
"ArgumentString": {
"type": "object",
"properties": {
"Value": {
"type": "string"
}
}
}
}
}
}
}
}
使用输入
{
"ArgumentChoice" : [
{
"ArgumentInt" : {
"Value" : "test"
}
},
{
"ArgumentString" :
{
"Name" : "JOB_NAME",
"Value" : 1
}
}
]
}