使用Maven存储库分发JSON模式文件

时间:2018-07-19 12:52:28

标签: java maven jsonschema json-schema-validator

在我的Java微服务中,我想使用JSON模式验证JSON对象。我有一堆JSON模式文件。一切都很好。

我可以使用Maven存储库分发我的JSON模式文件,然后在我的服务中添加Maven依赖项并在需要验证JSON对象的情况下从本地Maven存储库中的本地模式文件中进行选择吗?

我知道我可以保存架构文件并访问它们,但是我试图查看是否有某种方式可以使用maven?

谢谢,我希望我的问题很清楚。

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是将架构简单地包装到一个或多个jar文件中,然后像读取任何资源文件一样读取它们。

以下是一些示例代码来演示:

这是模式项目的项目结构的屏幕截图:

enter image description here

该项目的POM非常简单,因为它只是一个简单的jar:

<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>my.group</groupId>
  <artifactId>schemas</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>

消耗schemas项目的项目只需添加对schemas项目的依赖项:

<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>my.group</groupId>
    <artifactId>schema-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>my.group</groupId>
            <artifactId>schemas</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

读取模式的代码很简单-就像我之前说的那样,就像读取任何其他资源文件一样。下面是一些示例代码,它们读取模式文件并将输出转储到控制台:

package my.pkg;

import java.io.InputStream;
import java.util.Scanner;

public class ReadSchema {

    public static void main(String[] args) {
        InputStream inStream = ReadSchema.class.getClassLoader().getResourceAsStream("schema.json");
        Scanner scan = new Scanner(inStream);
        scan.useDelimiter("\\A");
        String json = scan.next();

        System.out.println(json);
        scan.close();
    }

}

希望这会有所帮助!