jackson-json-reference
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:
License
See LICENSE.
Development
Publishing
- http://central.sonatype.org/pages/ossrh-guide.html
- http://central.sonatype.org/pages/apache-maven.html#performing-a-release-deployment-with-the-maven-release-plugin
- https://oss.sonatype.org/#nexus-search;quick~jackson-json-reference
- https://search.maven.org/#search%7Cga%7C1%7Cjackson-json-reference
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