Skip to content

AndersDJohnson/jackson-json-reference

Repository files navigation

jackson-json-reference

WARNING! Not being actively maintained.

Parent: Build Status Codecov

  • Core: Download Core
  • CLI:   Download CLI

JSON Reference implementation for Java, based on Jackson. Process references in JSON documents, such as in JSON Schema. Aims for but not limited to full spec compliance.

Features

  • Supports URLs & files.
  • Relative & absolute reference URIs.
  • Recursive expansion, with options for max depth and stop on circularity.
  • Custom object mappers, allowing Jackson features like JSON comments, YAML, etc.
  • Built-in support for YAML based on file extension detection.

Specs

Usage

File

File file = new File("src/test/resources/nest.json");
JsonNode node = (new JsonReferenceProcessor()).process(file);

URL

URL url = new URL("http://json-schema.org/schema");
JsonNode node = (new JsonReferenceProcessor()).process(url);

Settings

JsonReferenceProcessor processor = new JsonReferenceProcessor();

processor.setStopOnCircular(false); // default true

processor.setMaxDepth(2); // default 1, or set to -1 for no max depth

// Custom object mapper allowing comments.
processor.setMapperFactory(new ObjectMapperFactory() {
   @Override
   public ObjectMapper create(URL url) {
       //ObjectMapper objectMapper = DefaultObjectMapperFactory.instance.create(url);
       ObjectMapper objectMapper = new ObjectMapper();
       objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
       return objectMapper;
   }
});

JsonNode node = processor.process( /*...*/ );

Output

ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File("out.json"), node);

Install

Maven

<dependencies>
    <dependency>
        <groupId>me.andrz.jackson</groupId>
        <artifactId>jackson-json-reference-core</artifactId>
        <version>0.3.2</version>
    </dependency>
</dependencies>

Gradle

repositories {
    mavenCentral()
}

dependencies {
    compile 'me.andrz.jackson:jackson-json-reference-core:0.3.2'
}

Manual

Download JAR(s) from Maven Central:

  • Core: Download Core
  • CLI:   Download CLI

License

See LICENSE.

Development

Publishing

If you need to bump the version of all projects in the multi-project:

mvn versions:set -DnewVersion=2.50.1-SNAPSHOT

Then be sure your build is up to date:

mvn compile

Now, use the Release Plugin (http://maven.apache.org/maven-release/maven-release-plugin/usage.html):

mvn release:prepare -DdryRun=true
mvn release:prepare

If you mess up:

mvn release:clean

Else:

mvn release:perform