2013-05-30 33 views
1

如何使用json-spirit读取C++中的json字符串?我阅读演示代码。 我发现:使用json-spirit读取C++中的json字符串

const Address addrs[5] = { { 42, "East Street", "Newtown",  "Essex",   "England" }, 
           { 1, "West Street", "Hull",  "Yorkshire",  "England" }, 
           { 12, "South Road", "Aberystwyth", "Dyfed",   "Wales" }, 
           { 45, "North Road", "Paignton", "Devon",   "England" }, 
           { 78, "Upper Street", "Ware",  "Hertfordshire", "England" } }; 

我可以将一个字符串转换成JSON对象?

char* jsonStr = "{'name', 'Tom'}"; 

回答

7

json_spirit提供bool read_string(const String_type& s, Value_type& value)bool read(const std::string& s, Value& value)从字符串读JSON数据。

下面是一个例子:

string name; 
string jsonStr("{\"name\":\"Tom\"}"); 
json_spirit::Value val; 

auto success = json_spirit::read_string(jsonStr, val); 
if (success) { 
    auto jsonObject = val.get_obj(); 

    for (auto entry : jsonObject) { 
     if (entry.name_ == "name" && entry.value_.type() == json_spirit::Value_type::str_type) { 
     name = entry.value_.get_str(); 
     break; 
     } 
    } 
} 

你也可以使用ifstream的而不是字符串从JSON从文件中读取。

请注意,根据RFC4627,字符串以引号开头和结尾。