Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 80 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
[![badge](https://img.shields.io/badge/document-doxygen-brightgreen)](http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html)
[![Coverage Status](https://coveralls.io/repos/github/open-source-parsers/jsoncpp/badge.svg?branch=master)](https://coveralls.io/github/open-source-parsers/jsoncpp?branch=master)


[JSON][json-org] is a lightweight data-interchange format. It can represent
numbers, strings, ordered sequences of values, and collections of name/value
pairs.
Expand All @@ -14,18 +13,16 @@ pairs.

JsonCpp is a C++ library that allows manipulating JSON values, including
serialization and deserialization to and from strings. It can also preserve
existing comment in unserialization/serialization steps, making it a convenient
existing comment in deserialization/serialization steps, making it a convenient
format to store user input files.


## Documentation

[JsonCpp documentation][JsonCpp-documentation] is generated using [Doxygen][].

[JsonCpp-documentation]: http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html
[Doxygen]: http://www.doxygen.org


## A note on backward-compatibility

* `1.y.z` is built with C++11.
Expand All @@ -34,42 +31,106 @@ format to store user input files.
* Major versions maintain binary-compatibility.

### Special note
The branch `00.11.z`is a new branch, its major version number `00` is to show that it is
different from `0.y.z` and `1.y.z`, the main purpose of this branch is to make a balance
between the other two branches. Thus, users can use some new features in this new branch
that introduced in 1.y.z, but can hardly applied into 0.y.z.

The branch `00.11.z`is a new branch, its major version number `00` is to show
that it is different from `0.y.z` and `1.y.z`, the main purpose of this branch
is to make a balance between the other two branches. Thus, users can use some
new features in this new branch that introduced in 1.y.z, but can hardly applied
into 0.y.z.

## Using JsonCpp in your project

### The vcpkg dependency manager
You can download and install JsonCpp using the [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager:

You can download and install JsonCpp using the [vcpkg](https://github.com/Microsoft/vcpkg/)
dependency manager, which has installation instruction dependent on your
build system. For example, if you are in a CMake project, the
[CMake install tutorial](https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-powershell)
suggests the follow installation method.

First, clone and set up `vcpkg`.

```sh
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install jsoncpp
```

Then, create a [vcpkg.json manifest](https://learn.microsoft.com/en-us/vcpkg/reference/vcpkg-json),
enabling manifest mode and adding JsonCpp to the manifest's dependencies list.

```sh
vcpkg new --application
vcpkg add port jsoncpp
```

> [!NOTE]: you can use vcpkg in either classic mode or manifest mode (recommended).

#### Classic mode

The JsonCpp port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
If your project does not have a `vcpkg.json`,
your project is in [Classic mode](https://learn.microsoft.com/en-us/vcpkg/concepts/classic-mode)
you can install JsonCpp by directly invoking the `install` command:

```sh
vcpkg install jsoncpp
```

### Manifest mode

If your project *does* have a vcpkg.json manifest, your project is in [Manifest mode](https://learn.microsoft.com/en-us/vcpkg/concepts/manifest-mode)
and you need to add JsonCpp to your package manifest dependencies, then invoke
install with no arguments.

```sh
vcpkg add port jsoncpp
vcpkg install
```

Example manifest:

```sh
{
"name": "best-app-ever",
"dependencies": [ "jsoncpp" ],
}
```

> [!NOTE] The JsonCpp port in vcpkg is kept up to date by Microsoft team members and community contributors.
> If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg)
> on the vcpkg repository.

### Conan package manager

You can download and install JsonCpp using the [Conan](https://conan.io/) package manager:
You can download and install JsonCpp using the [Conan](https://conan.io/)
package manager:

```sh
conan install -r conancenter --requires="jsoncpp/[*]" --build=missing
```

The JsonCpp package in Conan Center is kept up to date by [ConanCenterIndex](https://github.com/conan-io/conan-center-index) contributors. If the version is out of date, please create an issue or pull request on the Conan Center Index repository.
The JsonCpp package in Conan Center is kept up to date by [ConanCenterIndex](https://github.com/conan-io/conan-center-index)
contributors. If the version is out of date, please create an issue or pull request on the
Conan Center Index repository.

### Amalgamated source
https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)

See the [Wiki entry on Amalgamated Source](https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)).

### The Meson Build System
If you are using the [Meson Build System](http://mesonbuild.com), then you can get a wrap file by downloading it from [Meson WrapDB](https://wrapdb.mesonbuild.com/jsoncpp), or simply use `meson wrap install jsoncpp`.

If you are using the [Meson Build System](http://mesonbuild.com), then you can
get a wrap file by downloading it from [Meson WrapDB](https://mesonbuild.com/Wrapdb-projects.html),
or simply use `meson wrap install jsoncpp`.

### Other ways
If you have trouble, see the [Wiki](https://github.com/open-source-parsers/jsoncpp/wiki), or post a question as an Issue.

If you have trouble, see the
[Wiki](https://github.com/open-source-parsers/jsoncpp/wiki), or post a question
as an Issue.

## License

See the `LICENSE` file for details. In summary, JsonCpp is licensed under the
MIT license, or public domain if desired and recognized in your jurisdiction.
See the [LICENSE](./LICENSE) file for details. In summary, JsonCpp is licensed
under the MIT license, or public domain if desired and recognized in your
jurisdiction.
Loading