Skip to content
/ json11 Public
forked from dropbox/json11

A tiny JSON library for C++11.

License

Notifications You must be signed in to change notification settings

qqsskk/json11

This branch is up to date with dropbox/json11:master.

Folders and files

NameName
Last commit message
Last commit date
Apr 16, 2016
Apr 15, 2019
Oct 2, 2013
Jul 29, 2016
Mar 25, 2020
Nov 4, 2019
Jun 20, 2017
Sep 8, 2016
Nov 4, 2019

Repository files navigation

json11

json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.

The core object provided by the library is json11::Json. A Json object represents any JSON value: null, bool, number (int or double), string (std::string), array (std::vector), or object (std::map).

Json objects act like values. They can be assigned, copied, moved, compared for equality or order, and so on. There are also helper methods Json::dump, to serialize a Json to a string, and Json::parse (static) to parse a std::string as a Json object.

It's easy to make a JSON object with C++11's new initializer syntax:

Json my_json = Json::object {
    { "key1", "value1" },
    { "key2", false },
    { "key3", Json::array { 1, 2, 3 } },
};
std::string json_str = my_json.dump();

There are also implicit constructors that allow standard and user-defined types to be automatically converted to JSON. For example:

class Point {
public:
    int x;
    int y;
    Point (int x, int y) : x(x), y(y) {}
    Json to_json() const { return Json::array { x, y }; }
};

std::vector<Point> points = { { 1, 2 }, { 10, 20 }, { 100, 200 } };
std::string points_json = Json(points).dump();

JSON values can have their values queried and inspected:

Json json = Json::array { Json::object { { "k", "v" } } };
std::string str = json[0]["k"].string_value();

For more documentation see json11.hpp.

About

A tiny JSON library for C++11.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 94.9%
  • CMake 3.9%
  • Makefile 1.2%