एक आभारी डगलस Crockford और फ्रांसिस Galiegue लिए धन्यवाद! और http://json-schema-validator.herokuapp.com/index.jsp पर ऑनलाइन परीक्षक भयानक है! मुझे वास्तव में सहायक त्रुटि संदेशों को पसंद है (मुझे केवल एक उदाहरण मिला जिसमें वे असफल रहे), हालांकि रेखा और कॉलम और/या संदर्भ बेहतर होगा (अभी, आपको केवल JSON प्रारूप त्रुटियों के दौरान लाइन और कॉलम जानकारी मिलती है (जैक्सन की सौजन्य) अंत में, मैं अपने महान ट्यूटोरियल के लिए माइकल डेटेटबूम का शुक्रिया अदा करना चाहता हूं (भले ही वह केवल पाइथन, रूबी और सी को कवर करता है, जबकि सभी की सर्वोत्तम भाषा को स्पष्ट रूप से अनदेखा कर रहा है :-))।
उन लोगों के लिए जिन्होंने इसे याद किया (जैसे मैंने पहले किया था), उदाहरण हैं github.com/fge/json-chechema-processor-examples पर उदाहरण हैं। हालांकि ये उदाहरण बहुत प्रभावशाली हैं, लेकिन वे साधारण जेसन सत्यापन उदाहरण नहीं हैं जिन्हें मूल रूप से अनुरोध किया गया था (और मैं भी ढूंढ रहा था)। सरल उदाहरण github.com/fge/json-schema-validator/blob/master/src/main/java/com/github/fge/jsonschema/examples/Example1.java
उपरोक्त एलेक्स का कोड काम नहीं करता है मेरे लिए, लेकिन बहुत मददगार था; मेरा पोम नवीनतम मैवेन पोम में डाली गई निम्नलिखित निर्भरता के साथ नवीनतम स्थिर रिलीज, संस्करण 2.0.1 खींच रहा है।xml फ़ाइल:
<dependency>
<groupId>com.github.fge</groupId>
<artifactId>json-schema-validator</artifactId>
<version>2.0.1</version>
</dependency>
तो निम्नलिखित जावा कोड मेरे लिए ठीक काम करता है:
import java.io.IOException;
import java.util.Iterator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonNode;
import com.github.fge.jsonschema.exceptions.ProcessingException;
import com.github.fge.jsonschema.main.JsonSchema;
import com.github.fge.jsonschema.main.JsonSchemaFactory;
import com.github.fge.jsonschema.report.ProcessingMessage;
import com.github.fge.jsonschema.report.ProcessingReport;
import com.github.fge.jsonschema.util.JsonLoader;
public class JsonValidationExample
{
public boolean validate(String jsonData, String jsonSchema) {
ProcessingReport report = null;
boolean result = false;
try {
System.out.println("Applying schema: @<@<"+jsonSchema+">@>@ to data: #<#<"+jsonData+">#>#");
JsonNode schemaNode = JsonLoader.fromString(jsonSchema);
JsonNode data = JsonLoader.fromString(jsonData);
JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
JsonSchema schema = factory.getJsonSchema(schemaNode);
report = schema.validate(data);
} catch (JsonParseException jpex) {
System.out.println("Error. Something went wrong trying to parse json data: #<#<"+jsonData+
">#># or json schema: @<@<"+jsonSchema+">@>@. Are the double quotes included? "+jpex.getMessage());
//jpex.printStackTrace();
} catch (ProcessingException pex) {
System.out.println("Error. Something went wrong trying to process json data: #<#<"+jsonData+
">#># with json schema: @<@<"+jsonSchema+">@>@ "+pex.getMessage());
//pex.printStackTrace();
} catch (IOException e) {
System.out.println("Error. Something went wrong trying to read json data: #<#<"+jsonData+
">#># or json schema: @<@<"+jsonSchema+">@>@");
//e.printStackTrace();
}
if (report != null) {
Iterator<ProcessingMessage> iter = report.iterator();
while (iter.hasNext()) {
ProcessingMessage pm = iter.next();
System.out.println("Processing Message: "+pm.getMessage());
}
result = report.isSuccess();
}
System.out.println(" Result=" +result);
return result;
}
public static void main(String[] args)
{
System.out.println("Starting Json Validation.");
JsonValidationExample app = new JsonValidationExample();
String jsonData = "\"Redemption\"";
String jsonSchema = "{ \"type\": \"string\", \"minLength\": 2, \"maxLength\": 11}";
app.validate(jsonData, jsonSchema);
jsonData = "Agony"; // Quotes not included
app.validate(jsonData, jsonSchema);
jsonData = "42";
app.validate(jsonData, jsonSchema);
jsonData = "\"A\"";
app.validate(jsonData, jsonSchema);
jsonData = "\"The pity of Bilbo may rule the fate of many.\"";
app.validate(jsonData, jsonSchema);
}
}
ऊपर कोड से मेरे परिणाम है:
Starting Json Validation.
Applying schema: @<@<{ "type": "string", "minLength": 2, "maxLength": 11}>@>@ to data: #<#<"Redemption">#>#
Result=true
Applying schema: @<@<{ "type": "string", "minLength": 2, "maxLength": 11}>@>@ to data: #<#<Agony>#>#
Error. Something went wrong trying to parse json data: #<#<Agony>#># or json schema: @<@<{ "type": "string", "minLength": 2, "maxLength": 11}>@>@. Are the double quotes included?
Result=false
Applying schema: @<@<{ "type": "string", "minLength": 2, "maxLength": 11}>@>@ to data: #<#<42>#>#
Processing Message: instance type does not match any allowed primitive type
Result=false
Applying schema: @<@<{ "type": "string", "minLength": 2, "maxLength": 11}>@>@ to data: #<#<"A">#>#
Processing Message: string is too short
Result=false
Applying schema: @<@<{ "type": "string", "minLength": 2, "maxLength": 11}>@>@ to data: #<#<"The pity of Bilbo may rule the fate of many.">#>#
Processing Message: string is too long
Result=false
का आनंद लें!
लेखक ... तुम नहीं किया रीडमे में देखें कि कोड नमूने के लिए एक लिंक था? ;) – fge
हाय वहाँ, और आपकी महान पुस्तकालय के लिए धन्यवाद! हां वास्तव में, मैंने कोड के नमूनों को देखा और वास्तव में एक एम्बेडेड लिंक (ValidateServlet.java फ़ाइल) के साथ मेरी पोस्ट में इसका उल्लेख किया। इस पुस्तकालय के लिए फिर से धन्यवाद! महान सामान :) – svguerin3
मैं इस नमूने के बारे में बात नहीं कर रहा था: मैं javadoc में 'com.github.fge.jsonschema.examples' के बारे में बात कर रहा था;) बीटीडब्ल्यू, 1.6.0 बाहर है। – fge