Skip to content

Commit

Permalink
json-api implementation (#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
oleg-cherednik committed Jan 5, 2024
1 parent 3cb626a commit dea718e
Show file tree
Hide file tree
Showing 121 changed files with 7,125 additions and 4,458 deletions.
2 changes: 1 addition & 1 deletion NOTICE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
jackosn-utils
json-jackson-impl
Copyright 2020 Oleg Cherednik (oleg.cherednik@gmail.com)

This product includes software developed by
Expand Down
223 changes: 120 additions & 103 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,12 @@
</p>
</details>

# jackson-utils
# json-jackson-impl

> [Jackson Project](https://github.com/FasterXML/jackson) usability utilities.
> It's designed to add additional features like easy and centralized configuration,
> This is an implementation of [json-api](https://github.com/oleg-cherednik/json-api) base on
> [Jackson Project](https://github.com/FasterXML/jackson).
>
> For more details naIt's designed to add additional features like easy and centralized configuration,
> builder or static method set. Artifact does not include direct `Jackson Project`.
> It is up to you to add them into your project.
Expand All @@ -40,11 +42,14 @@

## Gradle

_e.g. Jackson of version __2.15.3__:_

```groovy
implementation 'ru.oleg-cherednik.jackson:jackson-utils:2.7'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.3'
```

_Optional dependencies (e.g. Jackson of version __2.15.3__):_
_Optional dependencies:_

```groovy
implementation 'com.fasterxml.jackson.module:jackson-module-afterburner:2.15.3'
Expand All @@ -55,38 +60,49 @@ implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.3'

## Maven

_e.g. Jackson of version __2.15.3__:_

```xml
<dependency>
<groupId>ru.oleg-cherednik.jackson</groupId>
<artifactId>jackson-utils</artifactId>
<version>2.7</version>
</dependency>

<dependencies>
<dependency>
<groupId>ru.oleg-cherednik.jackson</groupId>
<artifactId>jackson-utils</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.3</version>
</dependency>
</dependencies>
```

_Optional dependencies (e.g. Jackson of version __2.15.3__):_
_Optional dependencies:_

```xml

<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-afterburner</artifactId>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-afterburner</artifactId>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>2.15.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.15.3</version>
</dependency>
</dependencies>
```

Expand Down Expand Up @@ -116,13 +132,13 @@ class Data {
```

```java
String json = """
String json="""
{
"intVal" : 666,
"strVal" : "omen"
}
""";
Data data = JacksonUtils.readValue(json, Data.class);
Data data=JacksonUtils.readValue(json,Data.class);
```

##### `String` to a list of custom object type
Expand All @@ -137,7 +153,7 @@ class Data {
```

```java
String json = """
String json="""
[
{
"intVal" : 555,
Expand All @@ -149,15 +165,15 @@ String json = """
}
]
""";
List<Data> res = JacksonUtils.readList(json, Data.class);
List<Data> res=JacksonUtils.readList(json,Data.class);
```

##### `String` to a map of custom object type

###### Map with `String` keys and `Map` or primitive types as values

```java
String json = """
String json="""
{
"victory" : {
"intVal" : 555,
Expand All @@ -169,8 +185,9 @@ String json = """
}
}
""";
Map<String, Object> map = JacksonUtils.readMap(json);
Map<String, Object> map=JacksonUtils.readMap(json);
```

__Note:__ `map` values have either primitive type or `Map` or `List`.

###### `String` to a map with `String` keys and given type as value
Expand All @@ -185,7 +202,7 @@ class Data {
```

```java
String json = """
String json="""
{
"victory" : {
"intVal" : 555,
Expand All @@ -197,7 +214,7 @@ String json = """
}
}
""";
Map<String, Data> map = JacksonUtils.readMap(json, Data.class);
Map<String, Data> map=JacksonUtils.readMap(json,Data.class);
```

###### `String` to a map with `Integer` keys and given type as value
Expand All @@ -212,7 +229,7 @@ class Data {
```

```java
String json = """
String json="""
{
"1" : {
"intVal" : 555,
Expand All @@ -224,7 +241,7 @@ String json = """
}
}
""";
Map<Integer, Data> map = JacksonUtils.readMap(json, Integer.class, Data.class);
Map<Integer, Data> map=JacksonUtils.readMap(json,Integer.class,Data.class);
```

#### Read json from `InputStream`
Expand All @@ -242,15 +259,15 @@ class Data {

```json
{
"intVal": 666,
"strVal": "omen"
"intVal": 666,
"strVal": "omen"
}
```

```java
try(InputStream in = ...) {
Data data = JacksonUtils.readValue(in, Data.class);
}
try(InputStream in=...){
Data data=JacksonUtils.readValue(in,Data.class);
}
```

##### `InputStream` to a list of custom object type
Expand All @@ -268,21 +285,21 @@ class Data {

```json
[
{
"intVal": 555,
"strVal": "victory"
},
{
"intVal": 666,
"strVal": "omen"
}
{
"intVal": 555,
"strVal": "victory"
},
{
"intVal": 666,
"strVal": "omen"
}
]
```

```java
try (InputStream in = ...) {
List<Data> res = JacksonUtils.readList(in, Data.class);
}
try(InputStream in=...){
List<Data> res=JacksonUtils.readList(in,Data.class);
}
```

##### Read lazy
Expand All @@ -298,25 +315,25 @@ class Data {

```json
[
{
"intVal": 555,
"strVal": "victory"
},
{
"intVal": 666,
"strVal": "omen"
}
{
"intVal": 555,
"strVal": "victory"
},
{
"intVal": 666,
"strVal": "omen"
}
]
```

```java
try(InputStream in = ...) {
Iterator<Data> it = JacksonUtils.readListLazy(in, Data.class);
try(InputStream in=...){
Iterator<Data> it=JacksonUtils.readListLazy(in,Data.class);

while (it.hasNext()) {
Data data = it.next();
}
}
while(it.hasNext()){
Data data=it.next();
}
}
```

##### `InputStream` to a map of custom object type
Expand All @@ -325,21 +342,21 @@ try(InputStream in = ...) {

```json
{
"victory": {
"intVal": 555,
"strVal": "victory"
},
"omen": {
"intVal": 666,
"strVal": "omen"
}
"victory": {
"intVal": 555,
"strVal": "victory"
},
"omen": {
"intVal": 666,
"strVal": "omen"
}
}
```

```java
try (InputStream in = ...) {
Map<String, Object> map = JacksonUtils.readMap(in);
}
try(InputStream in=...){
Map<String, Object> map=JacksonUtils.readMap(in);
}
```

__Note:__ `map` values have either primitive type or `Map` or `List`.
Expand All @@ -357,21 +374,21 @@ class Data {

```json
{
"victory": {
"intVal": 555,
"strVal": "victory"
},
"omen": {
"intVal": 666,
"strVal": "omen"
}
"victory": {
"intVal": 555,
"strVal": "victory"
},
"omen": {
"intVal": 666,
"strVal": "omen"
}
}
```

```java
try (InputStream in = ...) {
Map<String, Object> map = JacksonUtils.readMap(in, Data.class);
}
try(InputStream in=...){
Map<String, Object> map=JacksonUtils.readMap(in,Data.class);
}
```

###### Map with `Integer` keys and given type as value
Expand All @@ -387,21 +404,21 @@ class Data {

```json
{
"1": {
"intVal": 555,
"strVal": "victory"
},
"2": {
"intVal": 666,
"strVal": "omen"
}
"1": {
"intVal": 555,
"strVal": "victory"
},
"2": {
"intVal": 666,
"strVal": "omen"
}
}
```

```java
try (InputStream in = ...) {
Map<Integer, Data> map = JacksonUtils.readMap(in, Integer.class, Data.class);
}
try(InputStream in=...){
Map<Integer, Data> map=JacksonUtils.readMap(in,Integer.class,Data.class);
}
```

##### Links
Expand Down

0 comments on commit dea718e

Please sign in to comment.