Sha256: 23f5e034901b42f1c5c9bb7b2a9b728c9f9e0b966bac3e7626ca5d631b683e58

Contents?: true

Size: 1.69 KB

Versions: 16

Compression:

Stored size: 1.69 KB

Contents

# Overview

The main parts of the JSON library are

* the [Value Class](Value-Class.md) to handle (extended) JSON data ([JAXN](https://github.com/stand-art/jaxn) data) in memory,
* the [Events Interface](Events-Interface.md) as universal adapter between different parts of the library (and other libraries), and
* the [Type Traits](Type-Traits.md) to control the interaction between C++ data types and the Value Class and Events Interface.

![Overview](Overview.png)

* The [Value Class](Value-Class.md) can be customised with [Type Traits](Type-Traits.md) and a [custom Base class](Advanced-Use-Cases.md#custom-base-class-for-values).
* The [Events Interface](Events-Interface.md) is used to convert the [Value Class](Value-Class.md) from and to external representations.
* One or more [Events Transformers](Events-Interface.md#included-transformers) can be used to modify, filter, ... Events and to send them to multiple Consumers.
* The [Type Traits](Type-Traits.md) are used to convert the [Value Class](Value-Class.md) from and to arbitrary C++ data types.
* The [Type Traits](Type-Traits.md) also generate Events, and thus external representations, directly from C++ data types, and
* are used to directly and efficiently parse external representations into arbitrary C++ data types.

![Types](Types.png)

* The [Value Class](Value-Class.md) can use views to strings and binary data to prevent memory allocations and copying.
* The [Value Class](Value-Class.md) can use pointers to other Value Class instances to re-use (parts of) other Values.
* The [Value Class](Value-Class.md) can use pointers to arbitrary objects (restricts the set of functions on the Value).

Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
couchbase-3.0.0.alpha.4-x86_64-linux ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.4-x86_64-darwin-19 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.4-universal-darwin-19 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.4 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.3-x86_64-linux ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.3-x86_64-darwin-19 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.3-universal-darwin-19 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.3 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.2-x86_64-linux ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.2-x86_64-darwin-19 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.2-universal-darwin-19 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.2 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.1-x86_64-linux ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.1-x86_64-darwin-19 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.1-universal-darwin-19 ext/third_party/json/doc/Overview.md
couchbase-3.0.0.alpha.1 ext/third_party/json/doc/Overview.md