我需要从JSON数组中提取数据,在Qt格式化'[[[1,2,3]],[[1,2,3],[1,2,3]],“string”]' 。逻辑上它是'[[[x-values]],[[y1-values],[y2-values]],“comments”]'。
编辑:x,y1,y2数组最多可包含1000多个元素。
我知道这是确切的格式(没有单引号)并且它不会改变。
我真正想要的是QVector xval,y1val;
我该如何解析?
(我是Qt的新手,如果我错过了明显的话,请原谅我。)
答案 0 :(得分:1)
快速而肮脏的解决方案:
QString s = "[[[1,2,3]],[[4,5,6],[7,8,9]],\"string\"]";
QStringList parts = s.remove("[").remove("]").split(',');
QVector<int> xval, yval;
if (parts.size() >= 6)
{
xval << parts[0].toInt() << parts[1].toInt() << parts[2].toInt();
yval << parts[3].toInt() << parts[4].toInt() << parts[5].toInt();
}
编辑:现在支持可变长度数组:
QVector<int> ToIntList(const QString& s)
{
QVector<int> result;
QStringList parts = s.trimmed().split(",");
for (int i = 0; i < parts.size(); ++i)
result << parts[i].toInt();
return result;
}
QString s = "[[[1,2,3,4,5,6, 7, 8]],[[9\n,10], [11,12,13]],\"string\"]";
QStringList lists = s.remove(" ").split("],[");
for (int i = 0; i < lists.size(); ++i)
lists[i] = lists[i].remove("[").remove("]");
QVector<int> xval, yval;
if (lists.size() >= 2)
{
xval = ToIntList(lists[0]);
yval = ToIntList(lists[1]);
}