{"id":26327289,"url":"https://github.com/oleg-cherednik/json-jackson-impl","last_synced_at":"2026-03-11T11:35:51.680Z","repository":{"id":40352771,"uuid":"76389162","full_name":"oleg-cherednik/json-jackson-impl","owner":"oleg-cherednik","description":"An implementation of json-api for Jackson Project.","archived":false,"fork":false,"pushed_at":"2024-03-07T08:55:50.000Z","size":530,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-14T17:26:26.587Z","etag":null,"topics":["jackson","jackson-json","java","java-8","java-json","java-json-library","json","json-api"],"latest_commit_sha":null,"homepage":"https://github.com/oleg-cherednik/json-jackson-impl","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oleg-cherednik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-13T18:59:04.000Z","updated_at":"2025-05-07T00:25:15.000Z","dependencies_parsed_at":"2023-11-19T10:31:54.252Z","dependency_job_id":"4f73c6fb-5200-4153-bd53-8a1ad1c710df","html_url":"https://github.com/oleg-cherednik/json-jackson-impl","commit_stats":null,"previous_names":["oleg-cherednik/jackson-utils"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/oleg-cherednik/json-jackson-impl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleg-cherednik%2Fjson-jackson-impl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleg-cherednik%2Fjson-jackson-impl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleg-cherednik%2Fjson-jackson-impl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleg-cherednik%2Fjson-jackson-impl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oleg-cherednik","download_url":"https://codeload.github.com/oleg-cherednik/json-jackson-impl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oleg-cherednik%2Fjson-jackson-impl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30379934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jackson","jackson-json","java","java-8","java-json","java-json-library","json","json-api"],"created_at":"2025-03-15T20:18:21.155Z","updated_at":"2026-03-11T11:35:51.664Z","avatar_url":"https://github.com/oleg-cherednik.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Maven Central](https://maven-badges.herokuapp.com/maven-central/ru.oleg-cherednik.jackson/jackson-utils/badge.svg)](https://maven-badges.herokuapp.com/maven-central/ru.oleg-cherednik.jackson/jackson-utils)\n[![javadoc](https://javadoc.io/badge2/ru.oleg-cherednik.jackson/jackson-utils/javadoc.svg)](https://javadoc.io/doc/ru.oleg-cherednik.jackson/jackson-utils)\n[![java8](https://badgen.net/badge/java/8+/blue)](https://badgen.net/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.txt)\n\n[![github-ci](https://github.com/oleg-cherednik/jackson-utils/actions/workflows/build-ci.yml/badge.svg?branch=master\u0026event=push)](https://github.com/oleg-cherednik/jackson-utils/actions)\n[![vulnerabilities](https://snyk.io/test/github/oleg-cherednik/jackson-utils/badge.svg?targetFile=build.gradle)](https://snyk.io/test/github/oleg-cherednik/jackson-utils?targetFile=build.gradle)\n[![license-scan](https://app.fossa.com/api/projects/git%2Bgithub.com%2Foleg-cherednik%2Fjackson-utils.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Foleg-cherednik%2Fjackson-utils?ref=badge_shield)\n[![quality](https://app.codacy.com/project/badge/Grade/a2abf7ff8b1b4e82ad2cd0d039aea353)](https://app.codacy.com/gh/oleg-cherednik/jackson-utils/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade\u0026branch=master)\n[![coverage](https://app.codacy.com/project/badge/Coverage/a2abf7ff8b1b4e82ad2cd0d039aea353)](https://app.codacy.com/gh/oleg-cherednik/jackson-utils/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_coverage\u0026branch=master)\n\n\u003cdetails\u003e\u003csummary\u003edevelop\u003c/summary\u003e\n\u003cp\u003e\n\n[![github-ci](https://github.com/oleg-cherednik/jackson-utils/actions/workflows/build-ci.yml/badge.svg?branch=develop\u0026event=push)](https://github.com/oleg-cherednik/jackson-utils/actions)\n[![quality](https://app.codacy.com/project/badge/Grade/a2abf7ff8b1b4e82ad2cd0d039aea353)](https://app.codacy.com/gh/oleg-cherednik/jackson-utils/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade\u0026branch=develop)\n[![coverage](https://app.codacy.com/project/badge/Coverage/a2abf7ff8b1b4e82ad2cd0d039aea353)](https://app.codacy.com/gh/oleg-cherednik/jackson-utils/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_coverage\u0026branch=develop)\n\n\u003c/p\u003e\n\u003c/details\u003e\n\n# jackson-utils\n\n\u003e [Jackson Project](https://github.com/FasterXML/jackson) usability utilities.\n\u003e It's designed to add additional features like easy and centralized configuration,\n\u003e builder or static method set. Artifact does not include direct `Jackson Project`.\n\u003e It is up to you to add them into your project.\n\n## Features\n\n*   Encapsulate all checked exceptions from Jackson with custom runtime exception;\n*   A central place for configuration;\n*   A central place for holding `ObjectMapper` instances;\n*   Utility class to make most common operations much more comfortable to use;\n*   Ability to change `Zone` to save `ZonedDateTime` independently of original zone;\n*   `ByteBuffer`/`InputStream` support for objects, lists and maps;\n*   Lazy read support for list from `Writer`;\n*   Read numeric as `Integer`, `Long`, `BigInteger` or `Double` (but not only as `Double`);\n*   Advanced `Reader`/`Writer` support for `enum`.\n\n## Gradle\n\n```groovy\nimplementation 'ru.oleg-cherednik.jackson:jackson-utils:2.7'\n```\n\n_Optional dependencies (e.g. Jackson of version __2.15.3__):_\n\n```groovy\nimplementation 'com.fasterxml.jackson.module:jackson-module-afterburner:2.15.3'\nimplementation 'com.fasterxml.jackson.module:jackson-module-parameter-names:2.15.3'\nimplementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.15.3'\nimplementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.3'\n```\n\n## Maven\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eru.oleg-cherednik.jackson\u003c/groupId\u003e\n    \u003cartifactId\u003ejackson-utils\u003c/artifactId\u003e\n    \u003cversion\u003e2.7\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n_Optional dependencies (e.g. Jackson of version __2.15.3__):_\n\n```xml\n\u003cdependencies\u003e\n   \u003cdependency\u003e\n      \u003cgroupId\u003ecom.fasterxml.jackson.module\u003c/groupId\u003e\n      \u003cartifactId\u003ejackson-module-afterburner\u003c/artifactId\u003e\n      \u003cversion\u003e2.15.3\u003c/version\u003e\n   \u003c/dependency\u003e\n   \u003cdependency\u003e\n      \u003cgroupId\u003ecom.fasterxml.jackson.module\u003c/groupId\u003e\n      \u003cartifactId\u003ejackson-module-parameter-names\u003c/artifactId\u003e\n      \u003cversion\u003e2.15.3\u003c/version\u003e\n   \u003c/dependency\u003e\n   \u003cdependency\u003e\n      \u003cgroupId\u003ecom.fasterxml.jackson.datatype\u003c/groupId\u003e\n      \u003cartifactId\u003ejackson-datatype-jdk8\u003c/artifactId\u003e\n      \u003cversion\u003e2.15.3\u003c/version\u003e\n   \u003c/dependency\u003e\n   \u003cdependency\u003e\n      \u003cgroupId\u003ecom.fasterxml.jackson.datatype\u003c/groupId\u003e\n      \u003cartifactId\u003ejackson-datatype-jsr310\u003c/artifactId\u003e\n      \u003cversion\u003e2.15.3\u003c/version\u003e\n   \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n__Note:__ `jackson-utils` does not contain dependency to the specific `Jackson Project`\nversion, so you have to add any version additionally\n\n## Usage\n\nTo simplify usage of _jackson-utils_, there're following classes:\n\n*   [JacksonUtils](#jacksonutils-class) - utility class with set of methods to use json transformation;\n*   [EnumId](#work-with-enum) - advanced enum serialization support.\n\n### JacksonUtils class\n\n#### Read json from `String`\n\n##### `String` to a custom object type (but not a collection)\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```java\nString json = \"\"\"\n              {\n                  \"intVal\" : 666,\n                  \"strVal\" : \"omen\"\n              }\n              \"\"\";\nData data = JacksonUtils.readValue(json, Data.class);\n```\n\n##### `String` to a list of custom object type\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```java\nString json = \"\"\"\n              [\n                  {\n                      \"intVal\" : 555,\n                      \"strVal\" : \"victory\"\n                  },\n                  {\n                      \"intVal\" : 666,\n                      \"strVal\" : \"omen\"\n                  }\n              ]\n              \"\"\";\nList\u003cData\u003e res = JacksonUtils.readList(json, Data.class);\n```\n\n##### `String` to a map of custom object type\n\n###### Map with `String` keys and `Map` or primitive types as values\n\n```java\nString json = \"\"\"\n              {\n                  \"victory\" : {\n                      \"intVal\" : 555,\n                      \"strVal\" : \"victory\"\n                  },\n                  \"omen\" : {\n                      \"intVal\" : 666,\n                      \"strVal\" : \"omen\"\n                  }\n              }\n              \"\"\";\nMap\u003cString, Object\u003e map = JacksonUtils.readMap(json);\n```\n__Note:__ `map` values have either primitive type or `Map` or `List`.\n\n###### `String` to a map with `String` keys and given type as value\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```java\nString json = \"\"\"\n              {\n                  \"victory\" : {\n                      \"intVal\" : 555,\n                      \"strVal\" : \"victory\"\n                  },\n                  \"omen\" : {\n                      \"intVal\" : 666,\n                      \"strVal\" : \"omen\"\n                  }\n              }\n              \"\"\";\nMap\u003cString, Data\u003e map = JacksonUtils.readMap(json, Data.class);\n```\n\n###### `String` to a map with `Integer` keys and given type as value\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```java\nString json = \"\"\"\n              {\n                  \"1\" : {\n                      \"intVal\" : 555,\n                      \"strVal\" : \"victory\"\n                  },\n                  \"2\" : {\n                      \"intVal\" : 666,\n                      \"strVal\" : \"omen\"\n                  }\n              }\n              \"\"\";\nMap\u003cInteger, Data\u003e map = JacksonUtils.readMap(json, Integer.class, Data.class);\n```\n\n#### Read json from `InputStream`\n\n##### `InputStream` to a custom object type (but not a collection)\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```json\n{\n  \"intVal\": 666,\n  \"strVal\": \"omen\"\n}\n```\n\n```java\ntry(InputStream in = ...) {\n    Data data = JacksonUtils.readValue(in, Data.class);\n}\n```\n\n##### `InputStream` to a list of custom object type\n\n##### Read eager\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```json\n[\n  {\n    \"intVal\": 555,\n    \"strVal\": \"victory\"\n  },\n  {\n    \"intVal\": 666,\n    \"strVal\": \"omen\"\n  }\n]\n```\n\n```java\ntry (InputStream in = ...) {\n    List\u003cData\u003e res = JacksonUtils.readList(in, Data.class);\n}\n```\n\n##### Read lazy\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```json\n[\n  {\n    \"intVal\": 555,\n    \"strVal\": \"victory\"\n  },\n  {\n    \"intVal\": 666,\n    \"strVal\": \"omen\"\n  }\n]\n```\n\n```java\ntry(InputStream in = ...) {\n    Iterator\u003cData\u003e it = JacksonUtils.readListLazy(in, Data.class);\n\n    while (it.hasNext()) {\n        Data data = it.next();\n    }\n}\n```\n\n##### `InputStream` to a map of custom object type\n\n###### `InputStream` to a map with `String` keys and `Map` or primitive types as values\n\n```json\n{\n  \"victory\": {\n    \"intVal\": 555,\n    \"strVal\": \"victory\"\n  },\n  \"omen\": {\n    \"intVal\": 666,\n    \"strVal\": \"omen\"\n  }\n}\n```\n\n```java\ntry (InputStream in = ...) {\n    Map\u003cString, Object\u003e map = JacksonUtils.readMap(in);\n}\n```\n\n__Note:__ `map` values have either primitive type or `Map` or `List`.\n\n###### `InputStream` to a map with `String` keys and given type as value\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```json\n{\n  \"victory\": {\n    \"intVal\": 555,\n    \"strVal\": \"victory\"\n  },\n  \"omen\": {\n    \"intVal\": 666,\n    \"strVal\": \"omen\"\n  }\n}\n```\n\n```java\ntry (InputStream in = ...) {\n    Map\u003cString, Object\u003e map = JacksonUtils.readMap(in, Data.class);\n}\n```\n\n###### Map with `Integer` keys and given type as value\n\n```java\nclass Data {\n\n    int intVal;\n    String strVal;\n\n}\n```\n\n```json\n{\n  \"1\": {\n    \"intVal\": 555,\n    \"strVal\": \"victory\"\n  },\n  \"2\": {\n    \"intVal\": 666,\n    \"strVal\": \"omen\"\n  }\n}\n```\n\n```java\ntry (InputStream in = ...) {\n    Map\u003cInteger, Data\u003e map = JacksonUtils.readMap(in, Integer.class, Data.class);\n}\n```\n\n##### Links\n\n*   Home page: https://github.com/oleg-cherednik/jackson-utils\n\n*   Maven:\n    *   __central:__ https://mvnrepository.com/artifact/ru.oleg-cherednik.jackson/jackson-utils\n    *   __download:__ https://repo1.maven.org/maven2/ru/oleg-cherednik/jackson/jackson-utils\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foleg-cherednik%2Fjson-jackson-impl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foleg-cherednik%2Fjson-jackson-impl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foleg-cherednik%2Fjson-jackson-impl/lists"}