是否可以在json中使用运算符 || ,如下所示:
{
"ven":{
"source":"logicCtrl" ,
"msg":"radio_volume" || "radio-mute", || "radio3",
"type":"int"
}
}
我可以通过解析C ++中的数据来获取数据,如下所示:
QFile jsonFile("VenParser.json");
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug() << "problème d'overture du fichier, exit";
}
QByteArray jsonData = jsonFile.readAll();
QJsonParseError *err = new QJsonParseError();
QJsonDocument doc = QJsonDocument::fromJson(jsonData, err);
if (err->error != 0)
qDebug() << err->errorString();
Venparser myparser;
if (doc.isNull())
{
qDebug() << "Document invalide";
}
else if (doc.isObject())
{
//recuperer l'object json
QJsonObject jObject = doc.object();
//convertir l'object json to variantmap
QVariantMap mainMap = jObject.toVariantMap();
// variant map
QVariantMap Map = mainMap["ven"].toMap();
myparser.source = Map["source"].toString();
myparser.msg = Map["msg"].toString();
myparser.type = Map["type"].toString();
header.H文件:我定义了我的结构
struct Venparser {
QString source;
QString msg;
QString type;
我的问题是我不想在我的&#34; msg&#34;但是这样的事情:
当我拨打 myparser.msg 时,它会在 msg 中检查我需要的值并将其返回。
&#34; MSG&#34;:&#34; radio_volume&#34; || &#34; radio-mute&#34;,|| &#34; radio3&#34;,
谢谢,
答案 0 :(得分:0)
使用||
令牌的示例不是有效的JSON。您可以阅读有关其格式here的更多信息。但是,如果我理解正确,您可以轻松地将JSON数组用于您的任务。
{
"ven": {
"source": "logicCtrl",
"msg": ["radio_volume", "radio-mute", "radio3"],
"type": "int"
}
}
您可以使用msg
方法访问toStringList()
数组。此外,如果使用与字符串不同的数据填充数组,则可以分别使用QVariantList
和toList()
。
QStringList messages = Map["msg"].toStringList();
现在messages
变量包含“radio_volume”,“radio-mute”和“radio3”值,因此您可以使用您的代码以任何方式提取所需的字符串。
如果您仍然需要解析您的确切示例(在技术上不是我之前所说的有效JSON),您将不得不编写自己的解析器,这对于答案来说是一个广泛的主题。