[原]JSON文字列(値)を判断し、「string」を比較する

4578 ワード

私のようなjson文字列は
    char* cjson = "{\"code\": \"200\",     \"code2\": 200}";
    Json::Value root;
    Json::Reader Jreader;
    Jreader.parse(cjson ,root);

この文字列のcode:“200”code 2:200
今問題が発生して、私はこのcode値を使って判断します
例えばcodeが「200」に等しいかどうかを判断します
 
その間に多くの問題に直面し、最後にやっと2つのcodeの判断方法を試みた.
    if(root["code"].toStyledString().compare("\"200\"
") == 0) cout<<"ok"<<endl; if(root["code2"].asInt() == 200) cout<<"ok2"<

2つ目のcode 2の判断は従来の方法である
最初のcodeは、2つの二重引用符("")を加える以外に、1つのリターン記号を付けて判断する必要があるとは思わなかった()
これがjsoncppライブラリの問題でしょう
 
 
ops!2つ追加して比較します.
 char* cjson = "{\"code\": \"200\",     \"code2\": 200, \"code3\": \"\", \"code4\": }";
    Json::Value root;
    Json::Reader Jreader;
    Jreader.parse(cjson ,root);
    if(root["code"].toStyledString().compare("\"200\"
") == 0) cout<<"ok"<<endl; if(root["code2"].asInt() == 200) cout<<"ok2"<<endl; if(root["code3"].toStyledString().compare("\"\"
") == 0) cout<<"ok3"<<endl; if(root["code4"].toStyledString().compare("null
") == 0) cout<<"ok4"<