今天写程序的时候使用JsonCpp来处理Json数据,出现了一个问题,报错如下:
找到大佬关于这个问题的文章,原因是当Json数据外面有中括号时,要用通过下标一层一层的取。
...
// value = "[{"A":"a","B":"b"}]"
for(int i =0; i <nSize; i++)
{
string A =value[i]["A"].asString();
string B =value[i]["B"].asInt();
}
知道原因之后,我将自己的代码改成了:
string A =value[0]["A"].asString();
然后依然报错,这就让我很疑惑,问题就是这么个问题,为什么我这里不能用下标呢???百思不得其解,翻看了之前前辈的代码,发现都是通过循环来一层一层取得,并非直接听过数字下标直接取得,抱着试试看的心情,我将代码改为:
int sub = 0;
string A =value[sub]["A"].asString();
然后就成了,这个解决方式我是着实没想到,记录一下!
//区分Json数据格式的这两种情况,尤其是 String -> Json 时!
1、[{},{}...]
2、{}