2015-01-15 3 views
1

Моя схема является:jsonschema.core.exceptions.InvalidSchemaException: со смертельным исходом: уровень core.invalidSchema: "фатальным"

{ 
    "title": "Order", 
    "description": "An order from oms", 
    "type": "object", 
    "properties": { 
     "order_id": { 
      "description": "The unique identifier for an order", 
      "type": "number" 
     }, 
     "order_bill_from_party_id": { 
      "description": "The unique identifier for a party", 
      "type": "string" 
     }, 
     "test":{ 
     "type":"integer" 
     } 
    }, 
    "required": ["order_id"] 
} 

Мой вход:

{"order_bill_from_party_id":"abc", 
"order_id":1234} 

Мой валидатор код:

val factory : JsonSchemaFactory= JsonSchemaFactory.byDefault() 
    val validator: JsonValidator = factory.getValidator 
    val schemaJson: JsonNode = JsonNodeFactory.instance.textNode(schema) 
    val inputJson = JsonNodeFactory.instance.textNode(input) 
    println(schemaJson) 
    val report: ProcessingReport = validator.validate(schemaJson, inputJson) 

EDIT: The schemaJson принимает форму:

{\n 
    \"title\": \"Order\",\n 
    \"description\": \"An order from oms\",\n 
    \"type\": \"object\",\n 
\"properties\": {\n  
    \"order_id\": {\n   
    \"description\": \"The unique identifier for an order\",\n  
     \"type\": \"number\"\n  
    },\n  
    \"order_bill_from_party_id\": {\n 
    \"description\": \"The unique identifier for a party\",\n    
     \"type\": \"string\"\n 
     },\n  
    \"test\":{\n 
     \"type\":\"integer\"\n 
    }\n 
    },\n 
    \"required\": [\"order_id\"]\n 
} 

Однако я получаю исключение:

org.specs.runner.SpecError: com.github.fge.jsonschema.core.exceptions.InvalidSchemaException: fatal: core.invalidSchema 
    level: "fatal" 
org.specs.runner.UserError: com.github.fge.jsonschema.core.exceptions.InvalidSchemaException: fatal: core.invalidSchema 
    level: "fatal" 

    at com.github.fge.jsonschema.processors.validation.ValidationProcessor.process(ValidationProcessor.java:86) 
    at com.github.fge.jsonschema.processors.validation.ValidationProcessor.process(ValidationProcessor.java:48) 
    at com.github.fge.jsonschema.core.processing.ProcessingResult.of(ProcessingResult.java:78) 
    at com.github.fge.jsonschema.main.JsonValidator.validate(JsonValidator.java:103) 
    at com.github.fge.jsonschema.main.JsonValidator.validate(JsonValidator.java:123) 
    at com.flipkart.marketing.bro.core.ValidationSchema.validate(ValidationSchema.scala:25) 
    at com.flipkart.marketing.bro.core.ValidationSchemaTest$$anonfun$3$$anonfun$apply$1.apply$mcV$sp(ValidationSchemaTest.scala:29) 
    at com.flipkart.marketing.bro.core.ValidationSchemaTest$$anonfun$3$$anonfun$apply$1.apply(ValidationSchemaTest.scala:27) 
    at com.flipkart.marketing.bro.core.ValidationSchemaTest$$anonfun$3$$anonfun$apply$1.apply(ValidationSchemaTest.scala:27) 
    at org.specs.specification.LifeCycle$class.withCurrent(ExampleLifeCycle.scala:66) 
    at org.specs.specification.Examples.withCurrent(Examples.scala:52) 

Однако на тестирование на:

http://json-schema-validator.herokuapp.com/ 

Я получаю

`success 
[]`. 

Может кто-нибудь помочь мне? Тестирование сайтов подразумевает, что моя схема верна, но мой код дает экскременты. Я думаю, что это из-за персонажей побега. Как я могу исправить это и удалить escape-символы в JsonNode? Спасибо заранее!

ответ

3

Использование JsonLoader.fromString вместо JsonNodeFactory.instance.textNode, чтобы загрузить схему и экземпляр:

val schemaJson= JsonLoader.fromString(schema) 
val inputJson = JsonLoader.fromString(input) 

textNode создает единый узел, содержащий текстовое значение, которое не является тем, что вы после этого.

Смежные вопросы