簡體   English   中英

C ++ RapidJSON解析包裝在回調函數中的JSON對象

[英]C++ RapidJSON parse a JSON object wrapped in a callback function

我正在嘗試使用C ++中的RapidJSON庫從Yahoo API解析JSON響應,並且此響應包裝在回調方法中。 這是我得到的回應

YAHOO.util.ScriptNodeDataSource.callbacks({"ResultSet":{"Query":"AMZN","Result":[{"symbol":"AMZN","name":"Amazon.com, Inc.","exch":"NMS","type":"S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"AMZN.MX","name":"Amazon.com, Inc.","exch":"MEX","type":"S","exchDisp":"Mexico","typeDisp":"Equity"}]}});

如果我將這樣的JSON響應直接喂給RapidJSON,它就無法解析它。

rapidjson::Document json_doc;

if (json_doc.Parse(fetched_data.c_str()).HasParseError()) {
        continue;
}

因此,除了完全刪除此子字符串的明顯方法以外,用此回調函數部分YAHOO.util.ScriptNodeDataSource.callbacks解析JSON的方法是什么。

您可以psuedo-null ); 部分,並在回調部分之后給出一個指針:

size_t pos = std::string("YAHOO.util.ScriptNodeDataSource.callbacks(").size();
std::string stringifiedJSON = "YAHOO.util.ScriptNodeDataSource.callbacks({"ResultSet": /*...*/ });"
str[str.size() - 2] = 0; // null terminate exactly on ");"
const char* ptr = stringifiedJSON.data();
ptr += pos;
json::Document doc;
doc.parse(ptr);
str[str.size() - 2] = ')'; //revert the string back;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM