- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我应该从服务器接收一个 QJsonObject
,其中将包含一个名为“List”的 QJsonObject
或 QJsonArray
。我的意思是,“列表”可以是 QJsonObject
或 QJsonArray
。那么如何检查“List”是QJsonObject
还是QJsonArray
呢?
接收到的QJsonDocument
可以是下面两种格式之一
1) 这里的“List”是一个QJsonArray
{
"Data":
{
"List":
[
{
"name": "something",
"id": "number"
},
{
"name": "something",
"id": "number"
},
{
"name":"something",
"id": "number"
}
]
}
}
2) 这里的“List”是一个QJsonObject
{
"Data":
{
"List":
{
"name": "something",
"id": "number"
}
}
}
提前致谢。任何帮助将不胜感激。
最佳答案
samples 的第一个 json 无效,所以我会等你更正它以指出正确的测试,在第二个只是缺少一个逗号的情况下。但是,当您访问 QJsonObject
或 QJsonArray
的字段时,它会返回一个 QJsonValueRef
,这是一个处理多种数据类型的助手,并且你知道它是 QJsonObject
还是 QJsonArray
你必须使用方法 isObject()
或 isArray()
:
const QByteArray json = R"(
{
"Data": {
"List": {
"name": "something",
"id": "number"
}
}
}
)";
QJsonDocument doc = QJsonDocument::fromJson(json);
QJsonObject obj = doc.object();
QJsonValueRef list_ref = doc["Data"].toObject()["List"];
if(list_ref.isObject())
qDebug()<< list_ref <<"is Object";
else if (list_ref.isArray()) {
qDebug()<< list_ref << "is array";
}
输出:
QJsonValue(object, QJsonObject({"id":"number","name":"something"})) is Object
而在您的第一个示例中,您想显示以下有效的 json:
{
"Data": {
"List": [{
"name": "something",
"id": "number"
}, {
"name": "something",
"id": "number"
}, {
"name": "something",
"id": "number"
}]
}
}
如果您使用相同的方法,您会得到:
QJsonValue(array, QJsonArray([{"id":"number","name":"something"},{"id":"number","name":"something"},{"id":"number","name":"something"}]))
is array
关于c++ - Qt中测试是QJsonObject还是QJsonArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52590131/
我是 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")); 我
我是一名优秀的程序员,十分优秀!