Changelog
All notable changes to SJF4J (Simple JSON Facade for Java) will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.1.5] - 2026.03.11
Added
- Added
JSON-Pfacade integration with runtime auto-detection inFacadeFactory. - Added
AnyOfresolution support inStreamingFacadeandNodeFacade.
Improved
- Improved streaming read performance with an array container-kind fast path.
- Improved node conversion internals and reduced duplicated conversion paths in
SimpleNodeFacade. - Improved consistency of constructor discovery and AnyOf handling across streaming and node conversion pipelines.
Changed
- Changed
NodeFacadeconversion contract to supportreadNode(node, type, deepCopy)and route deep copy through a unified path. - Changed
Nodes.toPojo(...)to delegate POJO materialization toNodeFacadefor centralized conversion behavior. - Changed exception mapping to use more unified and compact binding/conversion error messages.
Fixed
- Fixed several semantic consistency issues across node/path/patch behavior.
- Fixed edge-case conversion mismatches in POJO and dynamic-field binding flows.
[1.1.4] - 2026.02.24
Added
- Added
@ValidJsonSchemaandSchemaValidatorfor schema-based validation入口。 - Added
FacadeNodeswith backend adaptersJacksonNodesandGsonNodes. - Added/expanded tests for schema/path/facade/JDK17 scenarios.
Improved
- Optimized JSON Schema validation hot paths and compile/store flow.
- Improved consistency of streaming IO behavior across facades.
- Improved JsonPath internals by moving token model to segment model.
- Improved cross-module behavior consistency across node/path/patch operations.
Changed
- Renamed
NodeType->NodeKind. - Renamed
PathToken->PathSegment. - Renamed
PathUtil->Paths. - Renamed
PatchUtil->Patches. - Renamed annotations:
@Decode->@RawToValue@Encode->@ValueToRaw@Copy->@ValueCopy
Fixed
- Fixed multiple node/path/patch semantic alignment issues.
- Fixed schema loading/compilation edge cases and validation result handling.
- Fixed backend-specific streaming conversion consistency issues.
[1.1.3] - 2026.02.04
Added
- Added
skipNode()method toStreamingReaderinterface, enabling efficient skipping of entire JSON nodes during streaming parsing without fully deserializing them. - Added
@NodeCreatorannotation to support custom object construction with parameterized constructors.
Improved
- Enhanced POJO deserialization to automatically support Java records (JDK 14+). Record classes are now recognized and handled seamlessly, with their canonical constructors used for instantiation without requiring explicit
@NodeCreatorannotations. - Improved constructor parameter name resolution for
@NodeCreatorannotated constructors, supporting both@NodePropertyexplicit naming and automatic parameter name detection (when compiled with-parametersflag).
[1.1.1] - 2026.01.26
Fixed
- Make
SchemaStore.registerpublic
[1.1.0] - 2026.01.25
Added
- Introduced
JsonSchemamodule for JSON Schema validation (see: json-schema.org). Fully implements JSON Schema Draft 2020-12, with all official test cases passing. - Added
@NodeFieldannotation to allow custom mapping between POJO fields and node/property names.
Improved
- Unified and optimized
asMap,asList, andasArrayAPIs acrossNode,JsonObject, andJsonPathfor more consistent structural access.
Changed
- Renamed:
NodeUtiltoNodes - Renamed:
FunctionRegistrytoPathFunctionRegistry - Renamed:
@Convertibleto@NodeValue
Fixed
@NodeValuenow correctly supports annotation overrides in subclasses, even when the annotation is declared on a superclass.- Fixed incorrect detection logic for missing no-argument constructors in POJO binding scenarios.
[1.0.3] - 2026.01.04
Improved
- Differentiated the semantics of
equals()andnodeEquals() - Clarified the distinction between
toNode()anddeepNode() - Improved the output format of
inspect()
Changed
- Minor renaming and alignment of core API method names
Fixed
- Benchmark issues
[1.0.2] - 2025.12.25
Added
- Added support for JSON Patch (RFC 6902) via the
JsonPatchAPI. - Added the
JsonPointerclass, providing an API consistent withJsonPathwhile exclusively supporting JSON Pointer (RFC 6901) expressions. - Introduced the
@Convertibleannotation and theNodeRegistryclass to enable a pluggable custom type conversion mechanism. - Extended JsonPath filter expressions with the
=~operator, providing full regular expression matching support. - Added native support for
enumtypes.
Improved
- Optimized
JsonPathevaluation performance - Improved overall conversion and traversal efficiency
[1.0.1] - 2025.12.15
Added
- A simple build-in JSON reader/writer
- SJF4J now Fully Supports JSONPath.
- Added support for
FilterandFunction, including theeval()methods. - Added support for registering custom functions via
FunctionRegistry.
- Added support for
[1.0.0] - 2025.12.05
Added
- All this project.