Github 
Documentation 
Install 
Build From Source1 2 3 4 5 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/opt/cpplibs .. make make install 
 
使用包管理工具 缺点不能灵活控制版本 
 
Examples json_v1.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include  <iostream>  #include  <json/json.h>  #include  <string>  using  namespace  std;int  main (int  argc, char * argv[])     string jsonStr = "{\"name\": \"xxx\", \"array\": [\"a\", \"b\", \"c\"], \"obj\": {\"k\" : \"v\"}}" ;     Json::Reader reader;     Json::Value value;     if  (reader.parse (jsonStr, value)) {                  cout<<value["name" ].asString ()<<endl;                  for (int  i = 0 ; i < value["array" ].size (); i++){             cout<<i<<":" <<value["array" ][i].asString ()<<endl;         }                  cout<<value["obj" ]["k" ].asString ()<<endl;     }     return  0 ; } 
compile:
output
1 2 3 4 5 6 7 8 9 10 11 12 13 14 json_v1.cpp: In function ‘int main(int, char**)’: json_v1.cpp:20:18: warning: ‘Reader’ is deprecated: Use CharReader and CharReaderBuilder instead [-Wdeprecated-declarations]      Json::Reader reader;                   ^~~~~~ In file included from /data/cpplibs/include/jsoncpp/json/json.h:11:0,                  from json_v1.cpp:10: /data/cpplibs/include/jsoncpp/json/reader.h:35:83: note: declared here  class JSONCPP_DEPRECATED("Use CharReader and CharReaderBuilder instead") JSON_API Reader {                                                                                    ^~~~~~ xxx 0:a 1:b 2:c v 
注意这里使用老版本reader api会引起警告
Example New Api json_v2.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include  <iostream>  #include  <json/json.h>  #include  <string>  #include  <memory>  using  namespace  std;int  main (int  argc, char * argv[])     string jsonStr = "{\"name\": \"xxx\", \"array\": [\"a\", \"b\", \"c\"], \"obj\": {\"k\" : \"v\"}}" ;     Json::Value value;          JSONCPP_STRING errs;     Json::CharReaderBuilder readerBuilder;     std::unique_ptr<Json::CharReader> const  reader (readerBuilder.newCharReader())  ;     bool  res = reader->parse (jsonStr.c_str (), jsonStr.c_str () + jsonStr.length (), &value, &errs);     if  (res && errs.empty ())     {                  cout<<value["name" ].asString ()<<endl;                  for (int  i = 0 ; i < value["array" ].size (); i++){             cout<<i<<":" <<value["array" ][i].asString ()<<endl;         }                  cout<<value["obj" ]["k" ].asString ()<<endl;     }else {         cout<<"json parse fail:" <<errs<<endl;     }     return  0 ; } 
源码方式
如果使用包管理
output 已经没有警告了
判断类型 bool isXxx()
isNull 
isBool 
isInt 
isInt64 
isNumbeic 
isString 
isObject 
isArray 
 
 
转换原生类型 asXxx()
asInt 
asInt64 
asBool 
asDouble 
 
 
访问字段
[] 方式访问 val[“field”] 
key是否存在 isMember(“field”) 
 
 
转成格式化字符串
 
 
流操作 
读取: Json::parseFromStream  
输出: writeString 1 2 3 4 5 6 7 Json::StreamWriterBuilder wbuilder;  wbuilder["indentation" ] = "\t" ; std::string document = Json::writeString (wbuilder, root); Json::CharReaderBuilder rbuilder; rbuilder["collectComments" ] = false ; std::string errs; bool  ok = Json::parseFromStream (rbuilder, std::cin, &root, &errs);