我不知道有關JSON的Boost ptree。我已經嘗試過了,但它似乎...非常笨重。
這裏的基礎上,RFC一個簡單的JSON解析器,在精神提出:https://github.com/sehe/spirit-v2-json/tree/q21356666
你可以用它爲您的使用情況一樣test.cpp
#include <vector>
#include "json.hpp"
struct X {
static X from_json(JSON::Value const& v);
std::string var1;
double var2;
};
int main()
{
auto doc = as_object(JSON::parse(
"{\n"
" // some values\n"
" \"mykey\": [\n"
" {\n"
" \"var1\": \"value1_str\",\n"
" \"var2\" : 3.14\n"
" }\n"
" ]\n"
" // some other values\n"
"}\n"
));
if (doc.has_key("mykey"))
{
X data = X::from_json(doc["mykey"]);
std::cout << "X.var1: " << data.var1 << "\n";
std::cout << "X.var2: " << data.var2 << "\n";
}
std::cout << "doc: " << doc << "\n";
std::cout << "doc[\"mykey\"]: " << doc["mykey"] << "\n";
}
X X::from_json(JSON::Value const& v)
{
X result;
auto& o = as_object(as_array(v)[0]);
result.var1 = as_string(o["var1"]);
result.var2 = as_double(o["var2"]);
return result;
}
輸出:
X.var1: value1_str
X.var2: 3.14
doc: {"mykey":[{"var1":"value1_str","var2":3.14}]}
doc["mykey"]: [{"var1":"value1_str","var2":3.14}]
有是周圍的其他json庫。我建議你選擇一個以滿足你的需求。
非常感謝您的回答。非常具有啓發性。現在,我寧願等待,看看有人能幫助ptree並提升json。我寧願在代碼中不要更改太多。作爲一個附註, – Bob
是'doc'結尾'\ n'必要的嗎?爲什麼你使用'自動'? – Bob
@Bob這是JSON,當然這不是必需的。而我很懶。隨意鍵入'JSON :: Object' – sehe