、nlohmann :: JSONと、私はjsonオブジェクトをnlohmann :: jsonを使ってマップに変換するにはどうすればいいですか?例えば
map<string, vector<int>> m = { {"a", {1, 2}}, {"b", {2, 3}} };
json j = m;
行うことができますしかし、私は
m = j;
にnlohmann :: JSONとのマップにJSONオブジェクトに変換する方法を行うことはできませんか?
、nlohmann :: JSONと、私はjsonオブジェクトをnlohmann :: jsonを使ってマップに変換するにはどうすればいいですか?例えば
map<string, vector<int>> m = { {"a", {1, 2}}, {"b", {2, 3}} };
json j = m;
行うことができますしかし、私は
m = j;
にnlohmann :: JSONとのマップにJSONオブジェクトに変換する方法を行うことはできませんか?
jsonクラスにはget
という機能があります。
は、これらの線に沿って何かを試してみてください:
m = j.get<std::map <std::string, std::vector <int>>();
あなたは、それは正確にあなたがそれが望むように動作させるためにそれを少しいじる必要があるかもしれません。
実際、あなたのコードは現在のバージョン(2.0.9)で完全に有効です。
私が試した:
std::map<std::string, std::vector<int>> m = { {"a", {1, 2}}, {"b", {2, 3}} };
json j = m;
std::cout << j << std::endl;
をし、私が見つけた唯一の解決策は、単に手動でそれを解析することで、出力
{"a":[1,2],"b":[2,3]}
を得ました。
std::map<std::string, std::vector<int>> m = { {"a", {1, 2}}, {"b", {2, 3}} };
json j = m;
std::cout << j << std::endl;
auto v8 = j.get<std::map<std::string, json>>();
std::map<std::string, std::vector<int>> m_new;
for (auto &i : v8)
{
m_new[i.first] = i.second.get<std::vector<int>>();
}
for(auto &item : m_new){
std::cout << item.first << ": " ;
for(auto & k: item.second){
std::cout << k << ",";
}
std::cout << std::endl;
}
もし私がヒントをいただければ幸いです。
これは以前の問題でしたが、今修正されました。https://github.com/nlohmann/json/issues/600を参照してください。 –
nlomann :: JSON get<typename BasicJsonType>() const
例で、JSONは最も標準的なSTLコンテナへのオブジェクトを変換することができます:
// Raw string to json type
auto j = R"(
{
"foo" :
{
"bar" : 1,
"baz" : 2
}
}
)"_json;
// find object and convert to map
std::map<std::string, int> m = j.at("foo").get<std::map<std::string, int>>();
std::cout << m.at("baz") << "\n";
// 2
彼は周りに他の方法についての質問です: 'メートル= J;'申し訳例 – RPGillespie
のために、私はその質問を誤解した。 –