相关文章推荐
玩滑板的凉面  ·  Selenium ...·  2 月前    · 
乖乖的夕阳  ·  vba设置打印区域-掘金·  1 年前    · 

github地址:https://github.com/saasquatch/json-schema-inferrer
在线演示:https://json-schema-inferrer.herokuapp.com/

第一步
引入相关json-schema-inferrer包,需要jdk8以上的版本

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.yusys.study</groupId>
	<artifactId>studySchema</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>studySchema</name>
	<dependencies>
		<!-- fge -->
		<dependency>
			<groupId>com.github.fge</groupId>
			<artifactId>json-schema-validator</artifactId>
			<version>2.2.6</version>
		</dependency>
		<!-- fge 也可以使用下面的maven地址 <dependency> <groupId>com.github.java-json-tools</groupId> 
			<artifactId>json-schema-validator</artifactId> <version>2.2.14</version> 
			</dependency> -->
		<!-- fasterxml -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.3.0</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.3.0</version>
		</dependency>
		<dependency>
		  <groupId>com.github.saasquatch</groupId>
		  <artifactId>json-schema-inferrer</artifactId>
		  <version>0.1.1</version>
		</dependency>
	</dependencies>
<repositories>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>
</project>

第二步
编写java类

public class JsonToSchema {
    private static final ObjectMapper mapper = new ObjectMapper();
    private static final JsonSchemaInferrer inferrer = JsonSchemaInferrer.newBuilder()
		      .setSpecVersion(SpecVersion.DRAFT_04)
		      .setAdditionalPropertiesPolicy(AdditionalPropertiesPolicies.noOp())
		      .setRequiredPolicy(RequiredPolicies.noOp())
		      .build();
    public static void main(String[] args) throws Exception  {
        final JsonNode sample1 = mapper.readTree(
                "{\"code\":200,\"message\":\"测试通过\",\"data\":{\"data1\":\"test\",\"data2\":[\"test1\",\"test2\"]}}{\"code\":200,\"message\":\"测试通过\",\"data\":[		{\"data1\":\"test\"		}]}{	\"code\":200,	\"message\":\"测试通过\",	\"data\":{		\"data1\":\"test\",		\"data2\":[{	\"object1\":{		\"stu_id\":\"123\",		\"stu_name\":\"张三\"}},{	\"object2\":{		\"work_id\":\"456\",\"work_name\":\"李四\"}}		]	}}");
            final JsonNode resultForSample1 = inferrer.inferForSample(sample1);
            for (JsonNode j : Arrays.asList(sample1, resultForSample1)) {
              System.out.println(mapper.writeValueAsString(j));
{"code":200,"message":"测试通过","data":{"data1":"test","data2":["test1","test2"]}}{"code":200,"message":"测试通过","data":[		{"data1":"test"		}]}{	"code":200,	"message":"测试通过",	"data":{		"data1":"test",		"data2":[{	"object1":{		"stu_id":"123",		"stu_name":"张三"}},{	"object2":{		"work_id":"456","work_name":"李四"}}		]	}}
{"$schema":"http://json-schema.org/draft-04/schema#","type":"object","properties":{"code":{"type":"integer"},"data":{"type":"object","properties":{"data2":{"type":"array","items":{"type":"string"}},"data1":{"type":"string"}}},"message":{"type":"string"}}}
                                    有Google Task的地方,一般都会有Google Calendar,我在上个章节给大家分享了,如何用Google APIs和Google的应用系统进行集成(5)----如何把Google Tasks的JSON Schema转换成XML的Schema(XSD)?(http://blog.csdn.net/chancein007/article/details/29645055),那么Googl...
 JsonSchemaManager,用于在所有策略之间共享的单个(坚如磐石)核心功能
使用StrategyInterface简化新模式变体的实现
随意使用PR策略以获取缺少的模式
npm install @alt3/sequelize-to-json-schemas --save
const { JsonSchemaManager , JsonSchema7Strategy , OpenApi3Strategy } = require ( '@alt3/sequelize-to-json-schemas' )
                                    java解析json数据的四种方式将json字符串转为json对象或json对象转为json字符串,比如传统方式,Jackson的方式,Gson的方式以及Fastjson的方式。
npm install json-schema-class --save
import SchemaClass from 'json-schema-class' ;
SchemaClass公共方法
您应该能够根据当前模式草案验证类本身。 您也可以将模型数据存储在类prop中,并在构造函数/方法/其他prop中对其进行验证。 @test {SchemaClass}
能够创建一个基本的验证器类
    //ES6
let Validator = new SchemaClass ( {
  "type" : "string"
} ) ;
// Using a valid input
let text = Validator . validate ( "Input Text" ) ;
expect ( text 
JsonSchema 一般使用json数据的格式验证,但是作为测试同学来说大部分可能是自定义断言有些数据结构无法校验,那么它将可以帮你来完成。
而且非常不错,业界也有许多打着“锲约测试”的旗号并不是虚吹的。
官网介绍的用途
描述您现有的数据格式。
提供清晰的人类和机器可读文档。
验证对以下有用的数据:自动化测试、确保客户提交数据的质量
Json Schema官网:http://js...
您可以转换表示为对象文字的模式: 
 import { printSchema } from 'graphql'
import convert from 'jsonschema2graphql'
const jsonSchema = {
  $id : '#/person' ,
  type : 'object' ,
  properties : {
    name : {
      type : 'string' ,
    age : {
      type : 'integer' ,
const schema = convert ( { jsonSch
前端与服务器端的交互过程,大部分时候是使用json格式
对于json还是比较了解,可是json-schema是什么?
jsonJavaScript Object Notation JavaScript对象表示法
json-schema是一个用于验证json数据格式的工具,它本身也是使用json语言编写的
Json Schema定义了一套词汇和规则,这套词汇和规则用来定义Json元数据,且元数据也是通过Json数据形式表达的。Json元数据定义了Json数据需要满足的规范,规范包
                                    存储数据时、数据传输时、组件交互及数据验证的时候,JSON,在不同平台、组件及场景下的应用,已经自证了它作为无关平台标记语言的易用性及通用性。结合JSON Schema能够完成数据定义、数据传输以及数据验证的完整过程。
                                    如果你还在自己手动写model对象,那你就out了。场景:使用retrofit请求github的api,要使返回的数据自动解析到java对象中你必须准备好一个和json完全对应的java对象。而github的一个Repository有很多字段,如这个请求:你可以直接打开这个链接查看返回的json数据。可以看到里面有很多数据项,如果我们手动写这个java对象将非常耗费时间。所幸现在有了转换的工具。j...
JSON:(JavaScript Object Notation, JS对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
Schema,即XML Schema,XSD (XML Schema Definition)是W3C于2001年5月发布的推荐标准,指出如