- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
QJsonObject 不正常返回值。
json
{"response":{"header":{"resultCode":"0000","resultMsg":"OK"},"body":{"items":{"item":[{"baseDate":20190413,"baseTime":"0600","category":"PTY","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"REH","nx":55,"ny":127,"obsrValue":-998},{"baseDate":20190413,"baseTime":"0600","category":"RN1","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"T1H","nx":55,"ny":127,"obsrValue":6.3},{"baseDate":20190413,"baseTime":"0600","category":"UUU","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"VEC","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"VVV","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"WSD","nx":55,"ny":127,"obsrValue":0}]},"numOfRows":10,"pageNo":1,"totalCount":8}}}
代码
QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
QJsonObject jsonObj = jsonDoc.object();
QString status = jsonObj["resultMsg"].toString(); // empty
QJsonArray items = jsonObj["item"].toArray(); // null
我希望 OK 存储在状态变量中,但它没有包含任何内容。
items 变量存储 null。
最佳答案
为了更好地理解,请使用以下格式查看 json:
{
"response": {
"header": {
"resultCode": "0000",
"resultMsg": "OK"
},
"body": {
"items": {
"item": [{
"baseDate": 20190413,
"baseTime": "0600",
"category": "PTY",
"nx": 55,
"ny": 127,
"obsrValue": 0
}, {
"baseDate": 20190413,
"baseTime": "0600",
"category": "REH",
"nx": 55,
"ny": 127,
"obsrValue": -998
}, {
"baseDate": 20190413,
"baseTime": "0600",
"category": "RN1",
"nx": 55,
"ny": 127,
"obsrValue": 0
}, {
"baseDate": 20190413,
"baseTime": "0600",
"category": "T1H",
"nx": 55,
"ny": 127,
"obsrValue": 6.3
}, {
"baseDate": 20190413,
"baseTime": "0600",
"category": "UUU",
"nx": 55,
"ny": 127,
"obsrValue": 0
}, {
"baseDate": 20190413,
"baseTime": "0600",
"category": "VEC",
"nx": 55,
"ny": 127,
"obsrValue": 0
}, {
"baseDate": 20190413,
"baseTime": "0600",
"category": "VVV",
"nx": 55,
"ny": 127,
"obsrValue": 0
}, {
"baseDate": 20190413,
"baseTime": "0600",
"category": "WSD",
"nx": 55,
"ny": 127,
"obsrValue": 0
}]
},
"numOfRows": 10,
"pageNo": 1,
"totalCount": 8
}
}
}
Json 是一种格式,其中每个元素都有一个层次结构,也就是说要访问一个元素,您必须通过父元素来完成。
在 resultMsg 的情况下,您必须访问 response -> header-> resultMsg
。在 case item 中,您必须访问 response -> body-> items-> item
。
综合以上,解决方案是:
QJsonArray item_array;
QString status;
QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
QJsonObject jsonObj = jsonDoc.object();
if(jsonObj.contains("response")){
QJsonObject response_obj = jsonObj["response"].toObject();
if(response_obj.contains("header")){
QJsonObject header_obj = response_obj["header"].toObject();
if(header_obj.contains("resultMsg")){
status = header_obj["resultMsg"].toString();
}
}
if(response_obj.contains("body")){
QJsonObject body_obj = response_obj["body"].toObject();
if(body_obj.contains("items")){
QJsonObject items_obj = body_obj["items"].toObject();
if(items_obj.contains("item")){
item_array = items_obj["item"].toArray();
}
}
}
}
qDebug()<< "status:" << status;
qDebug()<< "item:" << item_array;
输出:
status: "OK"
item: QJsonArray([{"baseDate":20190413,"baseTime":"0600","category":"PTY","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"REH","nx":55,"ny":127,"obsrValue":-998},{"baseDate":20190413,"baseTime":"0600","category":"RN1","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"T1H","nx":55,"ny":127,"obsrValue":6.3},{"baseDate":20190413,"baseTime":"0600","category":"UUU","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"VEC","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"VVV","nx":55,"ny":127,"obsrValue":0},{"baseDate":20190413,"baseTime":"0600","category":"WSD","nx":55,"ny":127,"obsrValue":0}])
关于c++ - QJsonObject 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55660212/
我是 JSON 的新手,我开始尝试使用它,但我根本无法保存任何 QJsonObject 或 QJsonArrays。我做对了吗,如果我想获得我的 QjsonObject 的 Json 格式,我必须序列
QJsonObject 不正常返回值。 json {"response":{"header":{"resultCode":"0000","resultMsg":"OK"},"body":{"items
在我的应用程序中,我使用 json 对象从远程数据库获取结果。通常响应字符串如下所示: { status:"ok", data: [ { field1:"value1"
我有一个我加载的 json 对象: QJsonObject json = CommonToolkit::Types::LoadJson(config); 这是json文件的部分内容: { "confi
与此链接相反,如何列出y和value的值: Qt JsonObjects and initializer lists -- deeper than one level? QJsonObject o {
我想在 Qt 中使用 Json,我在 QJsonObject 中的数据必须以某种特定的顺序排列,因为我们有一些通过 token 和获取 Json 哈希的确认方法。 因为 QJsonObject 按字母
我想以这种格式生成一个 qjsonstring: {"id": 1, "params":[1,2,3]} 但我不知道如何将多个值 [1,2,3] 添加到键“params” 这是我的代码: QJson
有一个QJsonObject { "a":"...", "b":"...", "c":"..." } 有没有一种方法可以检查这个对象是否
我想将多个 QJsonObject 添加到 QJsonDocument。这可能吗? 应该是这样的: [ { "objID": "obj1" //... Some
我正在编写几个测试函数,因为这是我第一次使用 Qt 并试图了解我开发最终项目所需的部分。以下是功能: #include "money.h" #include "ui_money.h" #include
我有一个 QJsonObject 数据并想转换为 QString。我怎样才能做到这一点?在Qt中搜索帮助,它只能将QJsonObject转换为QVariantMap ... 提前致谢。 最佳答案 记得
我有: QJsonObject obj1({"bla" : "lab"}) QJsonObject obj2({"bla2" : "lab2"}) 我需要: QJsonObject obj3({"bl
假设我有一个名为 groupBoxFlags(JSON 名称:flags)的 checkable QGroupBox,它有四个 QCheckBox将 checkBoxFlag1 命名为 checkBo
我正在尝试创建一个 json 文件,在其中我将 QjsonObjects 插入到唯一的一个 QJsonArray 中,我得到的是每个 QjsonObject 都在一个独立的 QJsonArray 中,
我对 Qt 很陌生,我想做一个非常简单的操作:我必须获得以下JSonObject: { "Record1" : "830957 ", "Properties" : [{
我想向 QJsonDocument 添加多个 QJsonObject 而不是 QJsonArray。这可能吗?它应该看起来像这样: { "Obj1" : { "objID":
是否可以使用 long long 作为 QJsonObject 的值?我被迫将我的 API 从 JSON 更改为 XML,因为我得到的 1 个字段有 BigInt 值,显然我无法从中提取大数字QJso
json 层次结构中任何级别的键,我如何在不知道路径中确切键的情况下找到该键? 最佳答案 通常,这可以通过递归函数(调用自身的函数)来解决。我们首先将文档的对象传递给它,然后检查对象的键。如果没有找到
作为 QJSValue 上的 qt 文档, QJsonObject不能隐式转换为 QJSValue , 我想用 QJSEngine 调用一个 javascript 函数在 C++ 中,参数应使用 QL
所以我有: QJsonArray nodeCollection; nodeCollection.push_back(ListElements(program, "title", "lang")); 我
我是一名优秀的程序员,十分优秀!