2014-10-29 14 views
1
加載JSON模式文件

我的項目是一個Maven項目和內部資源文件夾 - 的src/main/resources文件夾我有一個JSON模式文件 - 「jsonschema.json」如何從Java

:SRC /主/資源
文件:jsonschema.json

現在我想驗證我的JSONObject使用JSON模式

如何加載schema.json文件中的代碼:

下面的行是否正確?

JsonNode schema = JsonLoader.fromResource("/jsonschema.json"); // correct? or correct me 
JsonNode data = JsonLoader.fromString(jsonData); 
ProcessingReport report = validator.validate(schema, data); 
+0

文件名中列出的依賴關係:jsonschema.json您使用schema.json?它是正確的? – 2014-10-29 07:51:00

+0

編輯了這個問題..這是一個錯字錯誤 – LazyGuy 2014-10-29 08:04:49

+0

由於資源和你的調用類位於同一個文件夾中,所以只需使用JsonLoader.fromResource(「jsonschema.json」)就可以。 – face 2014-10-29 08:37:32

回答

0

這可能會幫助你
廣場jsonschema文件放在項目的根目錄或資源使用普通文件中讀取讀取模式,並將其存儲在變量說str

 booleab isValidRequest=false; 
    String  requestData; // data to validate 
    String str; //schema 

      JsonNode requestDataJsonNode = com.github.fge.jackson.JsonLoader.fromString(requestData);  
      final JsonNode schemaNode = JsonLoader.fromString(str); 
    //  final JsonNode schemaNode=JsonLoader.fromResource("jsonschema.json"); for your query 
    // 
      final JsonSchemaFactory factory = JsonSchemaFactory.byDefault(); 
      JsonValidator validator = factory.getValidator();   
      ProcessingReport processingReport= validator.validate(schemaNode, requestDataJsonNode); 
      if(processingReport!=null) 
      { 
       isValidRequest=processingReport.isSuccess(); 
      } 

      } catch (Exception e) { 

      } 

如果你得到的異常而執行程序。 添加以下[鏈接]

http://mvnrepository.com/artifact/com.github.fge/json-schema-validator/2.2.5

+0

即使這是一個正常的文件,我需要通過路徑..好嗎?那麼我應該怎樣將它傳遞給src \ main \ resources下的文件。你可以補充那部分......! – LazyGuy 2014-10-29 09:02:50

+0

試試這個YourClassName.class.getClass()。getResource(「/ jsonschema.json」); – 2014-10-29 09:53:19

+0

請注意,該庫指定了可用於從類路徑加載資源的「資源」方案;所以你可以從URI加載'resource:/ wherever/your/json/is' – fge 2014-10-29 16:51:02