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

yytdfc/json11

This branch is 1 commit ahead of, 6 commits behind dropbox/json11:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

28b8fc9 · Sep 22, 2017
Apr 16, 2016
Apr 28, 2017
Oct 2, 2013
Jul 29, 2016
Sep 6, 2013
Sep 22, 2017
Jun 20, 2017
Sep 8, 2016
Apr 3, 2017

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();

More documentation is still to come. For now, see json11.hpp.

About

A tiny JSON library for C++11.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 94.9%
  • CMake 3.8%
  • Makefile 1.3%