Ott*_*den 5 javascript validation json jsonschema
我想使用描述它的JSON模式来验证HTML表单的输入.我正在使用Gary Court的JSV来验证它并且它一致地返回错误.我使用JSON Schema Lint(jsonschemalint.com)来检查我的架构.在Chrome Schema中,Lint告诉我我的架构是有效的,但在Firefox,Safari和Opera中,该网站告诉我我的架构是有效的JSON但不是有效的JSON架构.谁能帮我吗.我的架构如下.
更新8/6/13感谢您的所有回复.我更新的JSON(下面更新)现在在所有浏览器中都有效.但是我仍然从JSV得到以下错误:
Report {errors: Array[1], validated: Object, instance: JSONInstance, schema: JSONSchema, schemaSchema: JSONSchema…}
errors: Array[1]
0: Object
attribute: "type"
details: Array[1]
0: "object"
length: 1
__proto__: Array[0]
message: "Instance is not a required type"
schemaUri: "http://json-schema.org/draft-03/hyper-schema#"
uri: "urn:uuid:808fe74b-b0d0-4774-8975-289f105dfeaa#"
__proto__: Object
length: 1
__proto__: Array[0]
instance: JSONInstance
schema: JSONSchema
schemaSchema: JSONSchema
validated: Object
__proto__: Report
Run Code Online (Sandbox Code Playgroud)
我先说我可能错误地解释了错误消息.但是我很确定这是指"type": "object"在开始花括号之后的行.但"type": "object"关键:值是http://tools.ietf.org/html/draft-zyp-json-schema-03的 03草案规范的一部分.这很令人困惑,因为JSON Schema Lint也使用了JSV库...感谢您的帮助到目前为止.
{
"type": "object",
"$schema": "http://json-schema.org/draft-03/schema#",
"title": "FormValidation",
"description": "Describes the types of and valid inputs to a form generated via Form Creator",
"properties": {
"Air Temperature (C)": {
"type": "number",
"description": "Air Temperature measurement in centigrade.",
"required": false
},
"Ammonia": {
"type": "number",
"description": "Ammonia measurement at test site.",
"required": false
},
"Aquatic Life Present": {
"type": "string",
"description": "Are organisms such as fish or frogs living near the test site?",
"required": false
},
"Chlorophyll a": {
"type": "number",
"description": "Chlorophyll a measurement at test site.",
"required": false
},
"Conductivity": {
"type": "number",
"description": "Water conductivity measurement at test site.",
"required": false
},
"Date of Test": {
"type": "string",
"description": "Date the measurements were recorded.",
"required": true
},
"Dissolved Oxygen 1": {
"type": "number",
"description": "Disolved oxygen reading at first depth.",
"required": false
},
"Dissolved Oxygen 2": {
"type": "number",
"description": "Dissolved oxygen reading at second depth.",
"required": false
},
"Latitude": {
"type": "number",
"description": "Latitude of the measurement site in degrees.",
"required": true
},
"Longitude": {
"type": "number",
"description": "Longitude of the measurement site in degrees.",
"required": true
},
"Nitrates": {
"type": "number",
"description": "Nitrate measurement at test site.",
"required": false
},
"Orthophosphates": {
"type": "number",
"description": "Orthophosphate measurement at site of testing.",
"required": false
},
"Phosphates": {
"type": "number",
"description": "Phosphate reading at measurement site.",
"required": false
},
"Secchi Disk": {
"type": "number",
"description": "Secchi Disk depth reading at measurement site.",
"required": false
},
"Site Change": {
"type": "string",
"description": "Has the site undergone noticeable physical change since the last measuring event?",
"required": false
},
"Test Site": {
"type": "string",
"description": "Location where the measurements were recorded.",
"required": true
},
"Turbidity (ntu)": {
"type": "number",
"description": "Cloudiness or haziness of water, measured in Nephelometric Turbidity Units (NTU).",
"required": false
},
"Water Color or Odor": {
"type": "string",
"description": "Does the water have an strange colorations or emit a noticeable odor?",
"required": false
},
"Water Temperature (C)": {
"type": "number",
"description": "Water Temperature measurement in centigrade.",
"required": false
},
"pH": {
"type": "number",
"description": "pH measurement at test site.",
"required": false
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在JSON 模式网站中再次检查,似乎该名称"Turbidity (ntu)"不是有效的密钥。JSON schema不“喜欢”键中的括号。如果您省略括号,就像在 中一样,它会起作用"Turbidity ntu"。
我刚刚评论@pmagunia 的条目时他显然撤回了它。他说required只能包含布尔值。在我看来,required顶层的财产其实是多余的。我刚刚在JSON Schema Lint中测试了它,据说没有它该模式也是有效的。但required绝对只能保存布尔值。你的阵列
[ "TestSite", "Date of Test", "Latitude", "Longitude" ]
Run Code Online (Sandbox Code Playgroud)
被 JSON Schema Lint 转换为不带引号的字符串
TestSite,Date of Test,Latitude,Longitude
Run Code Online (Sandbox Code Playgroud)
这肯定是无效的 JSON!