Skip to content

Latest commit

 

History

History
98 lines (76 loc) · 2.82 KB

README-zh.md

File metadata and controls

98 lines (76 loc) · 2.82 KB

logo

Open in VSCode Github status Codacy Badge codecov GitHub release GitHub license

为 C++11 设计的轻量级配置库

EN | 中文

特点

  • 仅头文件,低接入成本
  • STL-like,低学习成本
  • 自定义类型转换与序列化
  • 完备的 Unicode 支持
  • ASCII & 宽字符支持

快速上手

创建 JSON 文档对象

json::value j;
j["integer"] = 1;
j["float"] = 1.5;
j["string"] = "something";
j["boolean"] = true;
j["user"]["id"] = 10;
j["user"]["name"] = "Nomango";

json::value j2 = json::object{
    { "null", nullptr },
    { "integer", 1 },
    { "float", 1.3 },
    { "boolean", true },
    { "string", "something" },
    { "array", json::array{ 1, 2 } },
    { "object", json::object{
        { "key", "value" },
        { "key2", "value2" },
    }},
};

类型转换 & 序列化:

struct User
{
    std::string name;
    int age;

    // 将自定义类型绑定到 configor
    CONFIGOR_BIND(json::value, User, REQUIRED(name), OPTIONAL(age))
};

// User -> json
json::value j = User{"John", 18};
// json -> User
User u = json::object{{"name", "John"}, {"age", 18}};

// User -> string
std::string str = json::dump(User{"John", 18});
// string -> User
User u = json::parse("{\"name\": \"John\", \"age\": 18}");

// User -> stream
std::cout << json::wrap(User{"John", 18});
// stream -> User
User u;
std::cin >> json::wrap(u);

更多内容请到 wiki 查看。

Star History

Star History Chart

计划

  • 自定义类型转换
  • Unicode 支持
  • 单元测试覆盖率达到 85%
  • 完善错误信息
  • YAML 支持
  • ini 支持
  • json5 支持
  • SAX 工具