[英]How to parsing simple json in strings c++?
我有一個string
,其中包含一個僅包含string
的小json
。 我已經使用stringstream
和boost::property_tree::read_json
來讀取它。 我已經看到這不是很快,而且,boost json解析器不是線程安全的(由於流)。 所以我試圖用另一種方式做到這一點:
std::vector< std::string > fields;
std::vector< std::string > values;
int separator = -1;
int prevSeparator = 0;
int fieldBegin = 0;
int fieldEnd = 0;
int valueBegin = 0;
int valueEnd = 0;
int64 t0 = cv::getTickCount();
do
{
prevSeparator = separator + 1;
separator = jsonStream.substr(prevSeparator, jsonStream.size() - prevSeparator - 1).find_first_of(',') + prevSeparator;
std::string element = jsonStream.substr(prevSeparator, separator - prevSeparator);
int fvSeparator = element.find_first_of(':');
std::string field = element.substr(0, fvSeparator);
std::string value = element.substr(fvSeparator + 1, element.size() - fvSeparator - 1);
fieldBegin = field.find_first_of('\"') + 1;
fieldEnd = field.find_last_of('\"');
fields.push_back(field.substr(fieldBegin, fieldEnd - fieldBegin));
valueBegin = value.find_first_of('\"') + 1;
valueEnd = value.find_last_of('\"');
values.push_back(value.substr(valueBegin, valueEnd - valueBegin));
} while (prevSeparator - separator <= 0);
您認為它足夠好還是應該改進?
如果我理解您對輸入權的描述,那么您就有一個包含字符串的Json-Array。 也就是說,它以["
開頭,然后是由","
分隔的一系列字符串。最后有"]
。 這是為您提供的高級算法:
"
分隔輸入,觀察轉義的引號。 [
和]
(那里也可以有空格)。 ,
所期望的字符串之間出現在(可以有在那里的空格,太)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.