类型判断:
QJsonValue v("1");
QJsonValue v1(1);
qDebug()<<v.isString();//true
qDebug()<<v.isBool();//false
qDebug()<<v.isDouble();//false
qDebug()<<v1.isString();//false
qDebug()<<v1.isBool();//false
qDebug()<<v1.isDouble();//true
isDouble()也可以用于判断整型。
强制转换:
背景:从服务器返回的json数据,可能是int或string类型。
图方便,写一个强制转换函数。
(本地只有int,string,bool类型)
不论json数据是什么类型,本地是什么类型,就强制转换成什么类型。
QString JsonValue_to_QString(QJsonValue value)
{
//value要么是QString,要么是int
if(value.isString())return value.toString();
else if(value.isDouble())return QString::number(value.toInt());
else return "";
}
int JsonValue_to_Int(QJsonValue value)
{
//value要么是QString,要么是int
if(value.isString())return value.toString().toInt();
else if(value.isDouble())return value.toInt();
else return 0;
}
QJsonValue v("1234");
QJsonValue v1(3333);
qDebug()<<JsonValue_to_QString(v);
qDebug()<<JsonValue_to_QString(v1);
qDebug()<<JsonValue_to_Int(v);
qDebug()<<JsonValue_to_Int(v1);
"1234"
"3333"
1234
3333
QJsonValue v("0");
QJsonValue v1(1);
bool k;
k=JsonValue_to_Int(v);
qDebug()<<k;
k=JsonValue_to_Int(v1);
qDebug()<<k;
false
true