2016-07-18 5 views
0

小さなアプリケーションのために、ローカルディスクをUnreal Engineでナビゲートするプログラムを作成しようとしています。私は、Gradleを使ってRESTサーバーをまとめました。短い話ですが、マシンディレクトリを持つJSONが与えられました。私は特定のディレクトリ名を取り出し、文字列(特にFText、ここではそれほど重要ではない)配列として返すようにしたい。C++でのJSON値へのアクセス

github(https://github.com/nlohmann/json)のnLohmannによって作成されたライブラリが見つかりました。このライブラリは、JSONをC++で処理する最良の方法です。しかし、私の人生にとって、ディレクトリ名を引き出す方法を理解することはできません。私はイテレータと簡単な.value()呼び出しを試みました。

コードとJSONの例は以下のとおりですが、どんな洞察も高く評価されます。

char buffer[1024]; 

FILE *lsofFile_p = _popen("py C:\\Users\\jinx5\\CWorkspace\\sysCalls\\PullRoots.py", "r"); 
fgets(buffer, sizeof(buffer), lsofFile_p); 
_pclose(lsofFile_p); 

std::string rootsJson(buffer); 
string s = rootsJson.substr(1); 
s = ReplaceAll(s, "'", ""); 

//here my string s will contain: [{"description":"Local Disk","name":"C:\\"},{"description":"Local Disk","name":"D:\\"},{"description":"CD Drive","name":"E:\\"}] 


//These are two syntax examples I found un nlohmann's docs, neither seems to work 
auto j = json::parse(s); 
string descr = j.value("description", "err"); 
+0

別のC++ JSONオプション(つまり、*私はかなりのように*)://ここで

は実施例でありますgithub.com/kazuho/picojson/blob/master/README.mkdn)。 –

+0

おそらくあなたにとって重すぎますが、QtのC++ Json実装も使用しています。それは本当にうまくいく。 –

+0

「いずれもうまくいかない」とは、有用な問題の説明ではありません。 "こんにちは、ボブの自動車修理?私の車は動作していないようだ、それは修正できますか?" –

答えて

2

あなたの問題は、あなたのリテラル文字列の\から来ていると思います。 C:\\の場合は5 \C:\\\\\が必要です。ある[PicoJSON](https://github.com/kazuho/picojson)(HTTPS

#include "json.hpp" 
#include <string> 

using namespace std; 
using json = nlohmann::json; 

int main(){ 

    json j = json::parse("[{\"description\":\"Local Disk\",\"name\":\"C:\\\\\"},{\"description\":\"Local Disk\",\"name\":\"D:\\\\\"},{\"description\":\"CD Drive\",\"name\":\"E:\\\\\"}]"); 

    cout << j.is_array() << endl; 

    for (auto& element : j) { 
     std::cout << "description : " << element["description"] << " | " << " name : " << element["name"] << '\n'; 
    } 
    return 0; 
} 
関連する問題