Skip to content

Files

Latest commit

 

History

History

json-node

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

avaje-json-node

Provides JsonNode types and associated JsonAdapters.

Dependency

<dependency>
  <groupId>io.avaje</groupId>
  <artifactId>avaje-json-node</artifactId>
  <version>3.0</version>
</dependency>

Examples

var jsonObject = JsonObject.create()
  .add("person", JsonObject.create().add("name", "myName").add("active", true))
  .add("address", JsonObject.create().add("street", "42 some").add("city", "Bar"));
var jsonArray = JsonArray.create()
    .add(42)
    .add("foo");

Extract

One reason for using JsonNode is to ease the filtering and transformation of json content.

We can use the extract() methods to help with the Stream API filtering and mapping.

JsonObject object = mapper.fromJsonObject(content);
JsonArray arrayWithNestedPerson = (JsonArray) object.get("people");

List<String> lastNames =
  arrayWithNestedPerson.stream()
    .filter(node -> "family".equals(node.extract("type")))
    .map(node -> node.extract("person.lastName"))
    .toList();
List<JsonNode> peopleNodes =
  arrayWithNestedPerson.stream()
    .filter(node -> "family".equals(node.extract("type")))
    .map(node -> node.extractNode("person"))
    .toList();

JsonNodeMapper

If you don't need avaje-jsonb then we can just use JsonNodeMapper.

// create a JsonNodeMapper
static final JsonNodeMapper mapper = JsonNodeMapper.builder().build();
JsonArray jsonArray = JsonArray.create()
  .add(42)
  .add("foo");

var asJson = mapper.toJson(jsonArray);

// read ARRAY from json
JsonArray arrayFromJson = mapper.fromJsonArray(asJson);