色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

cef 函數返回json對象

錢淋西2年前9瀏覽0評論

CEF(Chromium Embedded Framework)是由Google開發的一個嵌入式Web Browser控件,適用于各種平臺的應用程序中,常用于打開網頁、Web服務等。

在使用CEF時,我們經常會遇到需要將返回的數據以JSON格式進行處理的情況,同時CEF也提供了相應的函數來實現這個功能。

CefRefPtr<CefV8Value> json;
CefRefPtr<CefTaskRunner> task_runner = CefTaskRunner::GetForCurrentThread();
task_runner->PostTask(CefCreateClosureTask([json, callback]() {
CefRefPtr<CefV8Context> context = CefV8Context::GetCurrentContext();
if (!context.get()) {
callback.Execute(CefV8Value::CreateNull());
return;
}
CefRefPtr<CefFrame> frame = context->GetFrame();
if (!frame.get()) {
callback.Execute(CefV8Value::CreateNull());
return;
}
CefRefPtr<CefRequest> request = frame->GetURLRequest();
CefRefPtr<CefResponse> response = request->GetResponse();
CefRefPtr<CefStreamReader> reader = response->GetStreamReader();
if (reader->HasData()) {
std::string json_str = reader->ReadAll();
CefRefPtr<CefV8Value> json = CefParseJSON(json_str, JSON_PARSER_RFC);
callback.Execute(json);
}
}));

以上代碼中,我們通過獲取當前的CEF上下文,并通過該上下文中的frame獲取請求對象的響應數據流,最后解析JSON字符串并返回。

在實際應用中,我們可以將這段代碼封裝成一個函數,方便使用。

CefRefPtr<CefV8Value> GetJSON(CefRefPtr<CefV8Context> context) {
CefRefPtr<CefV8Value> json;
CefRefPtr<CefTaskRunner> task_runner = CefTaskRunner::GetForCurrentThread();
task_runner->PostTask(CefCreateClosureTask([json]() {
...
}));
return json;
}

通過封裝,我們可以在其他地方直接調用GetJSON函數獲取JSON對象。