JsonSchema 校验

package groovystudy

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.JsonNode
import com.github.fge.jsonschema.core.exceptions.ProcessingException
import com.github.fge.jsonschema.core.report.ProcessingReport
import com.github.fge.jsonschema.main.JsonSchema
import com.github.fge.jsonschema.main.JsonSchemaFactory
import com.github.fge.jsonschema.core.load.uri.URITranslatorConfiguration
import com.github.fge.jsonschema.core.load.configuration.LoadingConfiguration

class JsonSchemaExample {
    static void main(args) {
        //Response
        def filePath = "file:/D:/DATA_API_V2/soapui/schema/dataapiv2/"
        def jsonStr = '''{
	"book":"1",
	"name":"sunny"
        }''' 
        def mapper = new ObjectMapper()
        JsonNode json = mapper.readValue(jsonStr, JsonNode.class)        
        
        
        def schemaFileName = "test.json"
        def traslatorCfg = URITranslatorConfiguration.newBuilder().setNamespace(new URI(filePath)).freeze()
        def cfg = LoadingConfiguration.newBuilder().setURITranslatorConfiguration(traslatorCfg).freeze()
        def factory = JsonSchemaFactory.newBuilder().setLoadingConfiguration(cfg).freeze()
        def schema = factory.getJsonSchema(schemaFileName)
        
        ProcessingReport report = schema.validate(json)      
        if(!report.success) {
            throw new Exception("Schema $schemaFileName Validation failed :" +report)
        }

    }
  
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值