Skip to content

Declarative Stream Mapping (DSM) is a stream de/serializer library for XML and JSON. DSM allows you to make custom parsing, filtering, transforming, aggregating, grouping on any JSON or XML document at stream time(read only once).

License

Notifications You must be signed in to change notification settings

mfatihercik/dsm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

Declarative Stream Mapping(DSM) is a stream deserializer library that makes parsing of XML and JSON easy. DSM allows you to make custom parsing, filtering, transforming, aggregating, grouping on any JSON or XML document at stream time(read only once). DSM uses yaml or json for configuration definitions

If you parsing a complex, huge file and want to have high performance and low memory usage then DSM is for you.

Features

  • Work for both XML and JSON
  • Custom stream parsing
  • Filtering by value on any field with very low cognitive complexity
  • Flexible value transformation.
  • Default value assignment
  • Custom function calling during parsing
  • Powerful Scripting (Apache JEXL, Groovy, Javascript and other jsr223 implementations are supported)
  • Multiple inheritance between DSM config file (DSM file can extends to another config file)
  • Reusable fragments support
  • Very short learning curve
  • Memory and CPU efficient
  • Partial data extraction from JSON or XML
  • String manipulation with expression

Installation

Jackson

<dependency>
  <groupId>com.github.mfatihercik</groupId>
  <artifactId>dsm</artifactId>
  <version>1.0.5</version>
</dependency>

Gradle

compile ('com.github.mfatihercik:dsm:1.0.5')

About

Declarative Stream Mapping (DSM) is a stream de/serializer library for XML and JSON. DSM allows you to make custom parsing, filtering, transforming, aggregating, grouping on any JSON or XML document at stream time(read only once).

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published