使用CEF的JSON解析功能

Cef提供了JSON解析功能,在cef_parser.h文件內有三個JSON相關的方法:html

  • CefParseJSON
  • CefParseJSONAndReturnError
  • CefWriteJSON

以最簡單的CefParseJSON方法來搞個小演示樣例演示下使用方法。函數原型例如如下:json

CefRefPtr<CefValue> CefParseJSON(const CefString& json_string,
                             cef_json_parser_options_t options);

第一個參數是帶解析的json串,類型是CefString。實際使用時傳遞char*或std::string都可以。CefString可以本身主動依據它們構造。api

第二個是枚舉型的選項(定義在cef_types.h內)。有JSON_PARSER_RFC和JSON_PARSER_ALLOW_TRAILING_COMMAS兩個值。後面這個枚舉值的意思是贊成JSON串最後有一個逗號(以逗號結尾的JSON字符串可能會被標準解析器以爲不合規)。markdown

返回值是CefValue。CefValue是一個通用類型,定義在cef_values.h中,可以表明布爾、整型、雙精度浮點數、字符串、二進制、字典、列表這幾種類型(在cef_types.h中定義了枚舉類型cef_value_type_t)。函數

CefValue的GetType()方法可以返回實際的數據類型。而後還有GetBool、GetString、GetInt、GetDictionary等用來返回特定類型的數據。post

好了,有這些背景。就可以來解析JSON串了。.net

演示樣例JSON串(一個簡單的Dictionary)例如如下:code

{
    "result":0,
    "token":"abc-k-xxx-poi",
    "id":821251852
}

解析代碼片斷例如如下:htm

...
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");
}

就這樣吧。blog

其它參考文章詳見個人專欄:【CEF與PPAPI開發】。

相關文章
相關標籤/搜索