nlohmann::json obj1, obj2, obj3, obj4; const char * p = " {\"age\":22,\"gender\":true,\"name\":\"jack\",\"pet\":{\"name\":\"wang\",\"type\":\"dog\"}} " ; std::istringstream ostr( " {\"age\":45,\"gender\":true,\"name\":\"skipper\",\"pet\":{\"name\":\"wang\",\"type\":\"dog\"}} " ); // 示例json // {"age":22,"family":[{"call":"father","name":"adam"},{"call":"mother","name":"eve"},
{"call":"wife","name":"shine"}],"gender":true,"name":"jack","pet":{"name":"wang","type":"dog"}}
// a.赋值构造 obj1[ " name " ] = " jack " ; // 字符串 obj1[ " age " ] = 22 ; // 整数 obj1[ " gender " ] = true ; // 布尔值 obj1[ " pet " ] = { { " type " , " dog " }, { " name " , " wang " } }; // 对象 知识补充: nlohmann::json 中的数组是用{},而不是[] obj1[ " family " ] = { {{ " call " , " father " }, { " name " , " adam " }},{{ " call " , " mother " }, { " name " , " eve " }} }; // 数组 obj1[ " family " ][ 2 ] = { { " call " , " wife " }, { " name " , " shine " } }; // 元素赋值 // b.直接构造 obj2 = { { " type " , " dog " }, { " name " , " wang " } }; // c.字符串构造 知识补充: 注意nlohmann::json::parse()函数签名 nlohmann::json::parse(const char*, const char*) obj3 = nlohmann::json::parse(p, p + strlen(p)); // d.字符流构造(也可以使用std::ifstream之类替换) ostr >> obj4; // 属性提取 void test2() nlohmann::json tmp; const char * p = " {\"age\":22,\"gender\":true,\"name\":\"jack\",\"pet\":{\"name\":\"wang\",\"type\":\"dog\"}} " ; nlohmann::json obj = nlohmann::json::parse(p, p + strlen(p)); // nlohmann::json为空判断(不可以使用NULL) if (nullptr == tmp) std::cout << " empty " << std::endl; // 提取字符串 std:: string name = obj[ " name " ]. get <std:: string > (); // 提取整型 int age = obj[ " age " ]. get < int > (); // 提取布尔值 bool gender = obj[ " gender " ]. get < bool > (); // 提取对象 nlohmann::json pet = obj[ " pet " ]; std::cout << name << " : " << age << " : " << gender << std::endl; // 数组遍历 void test3() const char * p = " [{\"name\":\"1\",\"type\":\"a\"},{\"name\":\"2\",\"type\":\"b\"},
{\"name\":\"c\",\"type\":\"a\"},{\"name\":\"4\",\"type\":\"d\"}]
" ; nlohmann::json obj; obj = nlohmann::json::parse(p, p + strlen(p)); if (obj.empty()) // 数组为空 std::cout << " The array is empty " << std::endl; return ; // 遍历数组 for (auto& item : obj.items()) // item.value() = {"name":"1","type":"a"} std::cout << item.value() << std::endl; int main() // test1(); // test2(); test3(); return 0 ;

https://github.com/nlohmann/json