Icy's Blog

Hi, 请登录

JsonCpp(二) 读JSON 文件

//看看JSONCPP 的基本读取操作 下面是测试的json

{    "name": "Icy",    "age": 18,    "address": {        "city": "\u9b54\u90fd",        "country": "\u4e2d\u56fd"
    },    "links": [
        {            "name": "Google",            "url": "http://www.google.com"
        },
        {            "name": "Baidu",            "url": "http://www.baidu.com"
        },
        {            "name": "icy'blog",            "url": "http://www.icy6.com"
        }
    ]
}

读取json的我写了个简单的函数 么有特殊要求你们之间拿去用吧

Json::Value JsonParser(const char *FileName){
    Json::Reader Parser;
    Json::Value Root;    
    ifstream InFile( FileName, ios::in );    
    if( InFile )
    {
       Parser.parse(InFile,Root);
    }

    InFile.close();    
   return Root;
}

    Json::Reader Parser; jsoncpp的读取操作 使用该方法
    Json::Value Root; 最主要的 所有的值操作

下面看看完整的读取操作   

    char szPath[256] = {0};
    getcwd(szPath,256);    
    std::string FileName = szPath;
    FileName += "\\bin\\test.json";

    Json::Value Root = JsonParser(FileName.c_str());    
    if (!Root.isNull()){       
       cout << "姓名: " <<  Root["name"].asString() << endl
            << "年龄: " << Root["age"].asInt() << endl
            << "所在地: " << ToGBK(Root["address"]["country"].asString().c_str())
            << " - " << ToGBK(Root["address"]["city"].asString().c_str()) << endl;
       Json::Value Links = Root["links"];       
       cout << Links[2]["name"].asString() << ": " << Links[2]["url"].asString() << endl;

使用 Json::Reader的parse的读取要解析的json

bool parse(const std::string& document, Value& root, bool collectComments = true);
bool parse(JSONCPP_ISTREAM& is, Value& root, bool collectComments = true);
bool parse(const char* beginDoc, const char* endDoc, Value& root, bool collectComments = true);


相关推荐

评论

  • 昵称 (必填)
  • 邮箱
  • 网址