使用CEF的JSON解析功能
Cef提供了JSON解析功能,在cef_parser.h文件內有三個JSON相關的方法:
- CefParseJSON
- CefParseJSONAndReturnError
- CefWriteJSON
以最簡單的CefParseJSON方法來搞個小演示樣例演示下使用方法。函數原型例如以下:
CefRefPtr<CefValue> CefParseJSON(const CefString& json_string,
cef_json_parser_options_t options);
第一個參數是帶解析的json串,類型是CefString。實際使用時傳遞char*或std::string都能夠。CefString能夠自己主動依據它們構造。
第二個是枚舉型的選項(定義在cef_types.h內)。有JSON_PARSER_RFC和JSON_PARSER_ALLOW_TRAILING_COMMAS兩個值。后面這個枚舉值的意思是同意JSON串最后有一個逗號(以逗號結尾的JSON字符串可能會被標準解析器覺得不合規)。
返回值是CefValue。CefValue是一個通用類型,定義在cef_values.h中,能夠代表布爾、整型、雙精度浮點數、字符串、二進制、字典、列表這幾種類型(在cef_types.h中定義了枚舉類型cef_value_type_t)。
CefValue的GetType()方法能夠返回實際的數據類型。然后還有GetBool、GetString、GetInt、GetDictionary等用來返回特定類型的數據。
好了,有這些背景。就能夠來解析JSON串了。
演示樣例JSON串(一個簡單的Dictionary)例如以下:
{
"result":0,
"token":"abc-k-xxx-poi",
"id":821251852
}
解析代碼片段例如以下:
...
CefRefPtr<CefValue> jsonObject = CefParseJSON(strJoinKey, JSON_PARSER_ALLOW_TRAILING_COMMAS);
if (jsonObject->IsValid())
{
CefRefPtr<CefDictionaryValue> dict = jsonObject->GetDictionary();
CefString token = dict->GetString("token");
int id = dict->GetInt("id");
int result = dict->GetInt("result");
}
就這樣吧。
其它參考文章詳見我的專欄:【CEF與PPAPI開發】。
浙公網安備 33010602011771號