![](/img/trans.png)
[英]RapidJSON c++ efficient and scalable way to append json object to file
[英]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.