JSON library for the Apache Groovy programming language providing JSON parsing, generation, and manipulation capabilities
npx @tessl/cli install tessl/maven-org-apache-groovy--groovy-json@5.0.0The Groovy JSON library provides comprehensive JSON processing capabilities for the Apache Groovy programming language. It offers high-performance JSON parsing with multiple parser implementations, flexible JSON generation via builders with DSL support, customizable JSON serialization, and utilities for low-level JSON processing.
org.apache.groovy:groovy-json:5.0.0implementation 'org.apache.groovy:groovy-json:5.0.0'<dependency>
<groupId>org.apache.groovy</groupId>
<artifactId>groovy-json</artifactId>
<version>5.0.0</version>
</dependency>import groovy.json.*;Specific imports:
import groovy.json.JsonSlurper;
import groovy.json.JsonSlurperClassic;
import groovy.json.JsonBuilder;
import groovy.json.StreamingJsonBuilder;
import groovy.json.JsonOutput;
import groovy.json.JsonGenerator;
import groovy.json.JsonLexer;
import groovy.json.JsonToken;
import groovy.json.JsonException;
import groovy.json.JsonParserType;import groovy.json.JsonSlurper;
import groovy.json.JsonBuilder;
import groovy.json.JsonOutput;
import java.nio.file.Path;
import java.nio.file.Paths;
// Parse JSON
JsonSlurper jsonSlurper = new JsonSlurper();
Object result = jsonSlurper.parseText('{"name":"John","age":30,"city":"New York"}');
// Parse from Path (Java NIO)
Path jsonPath = Paths.get("data.json");
Object pathResult = jsonSlurper.parse(jsonPath);
// Build JSON using DSL
JsonBuilder json = new JsonBuilder();
json.person {
name "Alice"
age 25
location {
city "San Francisco"
state "CA"
}
}
String jsonString = json.toString();
// Convert objects to JSON
Map<String, Object> data = new HashMap<>();
data.put("message", "Hello World");
data.put("timestamp", new Date());
String output = JsonOutput.toJson(data);The Groovy JSON library is built around several key architectural components:
High-performance JSON parsing with multiple parser implementations optimized for different scenarios, from small payloads to large streaming documents.
public class JsonSlurper {
public JsonSlurper();
public Object parseText(String text);
public Object parse(Reader reader);
public Object parse(File file);
public Object parse(URL url);
public JsonSlurper setType(JsonParserType type);
}
public enum JsonParserType {
INDEX_OVERLAY, // Fastest parser with pointers to original buffer
CHARACTER_SOURCE, // Parser for large files using windowing
LAX, // Relaxed parser allowing comments and unquoted keys
CHAR_BUFFER // Fast basic parser without index overlay
}DSL-based JSON building with Groovy's closure syntax, supporting both in-memory and streaming approaches for flexible JSON construction.
public class JsonBuilder extends GroovyObjectSupport implements Writable {
public JsonBuilder();
public JsonBuilder(Object content);
public Object call(Map m);
public Object call(Closure c);
public String toString();
public String toPrettyString();
}
public class StreamingJsonBuilder extends GroovyObjectSupport {
public StreamingJsonBuilder(Writer writer);
public Object call(Map m) throws IOException;
public Object call(Closure c) throws IOException;
}Comprehensive JSON serialization utilities with customizable generation, type conversion, and formatting options.
public class JsonOutput {
public static String toJson(Object object);
public static String toJson(Map m);
public static String toJson(Date date);
public static String prettyPrint(String jsonPayload);
public static JsonUnescaped unescaped(CharSequence text);
}
public interface JsonGenerator {
public String toJson(Object object);
public boolean isExcludingFieldsNamed(String name);
public boolean isExcludingValues(Object value);
}Token-based JSON processing for fine-grained control over parsing and custom JSON processing workflows.
public class JsonLexer implements Iterator<JsonToken> {
public JsonLexer(Reader reader);
public JsonToken nextToken();
public boolean hasNext();
public JsonToken next();
}
public class JsonToken {
public Object getValue();
public JsonTokenType getType();
public long getStartLine();
public long getStartColumn();
}
public enum JsonTokenType {
OPEN_CURLY, CLOSE_CURLY, OPEN_BRACKET, CLOSE_BRACKET,
COLON, COMMA, NULL, TRUE, FALSE, NUMBER, STRING
}Utility classes for string escaping, performance optimization, and error handling in JSON processing workflows.
public class StringEscapeUtils {
public static String escapeJava(String str);
public static String unescapeJava(String str);
public static String escapeJavaScript(String str);
public static String unescapeJavaScript(String str);
}
public class JsonException extends RuntimeException {
public JsonException();
public JsonException(String message);
public JsonException(String message, Throwable cause);
}// Core parsing interface
public interface JsonParser {
Object parse(String jsonString);
Object parse(Reader reader);
Object parse(File file, String charset);
Object parse(InputStream input);
Object parse(byte[] bytes);
}
// JSON generation options builder
public static class JsonGenerator.Options {
public Options excludeNulls();
public Options disableUnicodeEscaping();
public Options dateFormat(String format);
public Options timezone(String timezone);
public Options addConverter(Converter converter);
public Options excludeFieldsByName(CharSequence... fieldNames);
public Options excludeFieldsByType(Class<?>... types);
public JsonGenerator build();
}
// Custom type conversion
interface JsonGenerator.Converter {
boolean handles(Class<?> type);
Object convert(Object value, String key);
}