Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Qt4中解析特定格式的json数组,无外部库_Json_Qt_String Parsing - Fatal编程技术网

在Qt4中解析特定格式的json数组,无外部库

在Qt4中解析特定格式的json数组,无外部库,json,qt,string-parsing,Json,Qt,String Parsing,我需要从JSON数组中提取数据,格式为“[[1,2,3]],[[1,2,3],[1,2,3]],[1,2,3]],Qt中的“字符串”]'。逻辑上是“[[x-values]],[[y1-values],[y2-values]],“comments”] 编辑:x、y1、y2阵列最多可包含1000多个大型元素 我知道这是确切的格式(没有单引号),它不会改变 我真正想要的是QVector xval,y1val 我将如何解析它 (我是Qt新手,因此如果我遗漏了明显的问题,请原谅。)快速而肮脏的解决方案:

我需要从JSON数组中提取数据,格式为“[[1,2,3]],[[1,2,3],[1,2,3]],[1,2,3]],Qt中的“字符串”]'。逻辑上是“[[x-values]],[[y1-values],[y2-values]],“comments”]

编辑:x、y1、y2阵列最多可包含1000多个大型元素

我知道这是确切的格式(没有单引号),它不会改变

我真正想要的是QVector xval,y1val

我将如何解析它


(我是Qt新手,因此如果我遗漏了明显的问题,请原谅。)

快速而肮脏的解决方案:

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();
}
QString s=“[[1,2,3],[[4,5,6],[7,8,9],\“string\”;
QStringList parts=s.remove(“[”).remove(“]).split(“,”);
QVector xval,yval;
如果(parts.size()>=6)
{

xval我永远不会假设格式永远不会改变。JSON结构可能永远不会改变,但格式可能会改变。至少要准备好在JSON中完全合法的令牌之间的空格。我的意思是,我的整个应用程序都是基于对该字符串的解析。这意味着如果另一端引入更改,我需要调整m不管怎么说,都是y代码。我想说的是,后续查询之间不会有差异。对不起,我认为我写的有点含糊不清。我编辑我的问题是为了反映数组不是三个元素的长度,而是可以有任意长度。这正是我想要的!谢谢。
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]);
}