从 qjsonarray 中删除大括号并从文档中替换方括号

Posted

技术标签:

【中文标题】从 qjsonarray 中删除大括号并从文档中替换方括号【英文标题】:remove curly brackets from qjsonarray and replace square brackets from document 【发布时间】:2018-08-29 05:55:15 【问题描述】:

我正在向 QJsonObjects 插入很多不同的值,如下所示:

//gender inserted to QJsonObject gender
QJsonObject gender;
gender.insert("gender", person->gender());

//birthDate inserted to QJsonObject birthDate
QJsonObject birthDate;
birthDate.insert("birthDate", person->birthdate().toString());

之后,我将 QJsonObjects 附加到 QJsonArray,如下所示:

//Inserting all objects to QJsonDocument m_jsonDocument
QJsonArray allObjects;
allObjects.append(gender);
allObjects.append(birthDate);

然后我把它全部放到QJsonDocument:

m_jsonDocument->setArray(allObjects);

输出:

[
    "gender": "male"
,

    "birthDate": "2001-12-19"
]

我需要的是删除对象周围的大括号并将方括号替换为大括号。我是否需要将这些放入 QString 并删除和替换,或者是否有更简单的方法来修改对象、数组或整个文档?我试图环顾四周,但还没有找到合适的解决方案。

这就是我希望看到的输出:


"gender": "male",
"birthDate": "2001-12-19"

对象内部有很多东西,它需要作为 FHIR 标准。对象里面有对象,文档还需要大量修改。

【问题讨论】:

【参考方案1】:

您应该只使用一个 QJsonObject 并将属性添加到该对象:

QJsonObject obj;
obj.insert("gender",  person->gender());
obj.insert("birthDate", person->birthdate().toString());
m_jsonDocument->setObject(obj);

输出:


    "birthDate": "2001-12-19",
    "gender": "male"

【讨论】:

非常感谢 eyllanec! Thant用括号解决了我的问题!有没有一种简单的方法来影响对象内对象的顺序?目前,在我将对象设置为文档后,使用此方法会弄乱对象的顺序。 @Lauri json 是字典,按字母顺序组织,因此访问时间最短,标准也是如此。 json 中的顺序对 API 来说并不重要,所以不用担心,您的 API 会正确理解它。 谢谢!是的,它是按字母顺序排列的。 API 似乎并不在意。那太棒了!再次感谢!

以上是关于从 qjsonarray 中删除大括号并从文档中替换方括号的主要内容,如果未能解决你的问题,请参考以下文章

从集合中删除文档并从另一个集合中的数组中删除 Id

C# 怎样让大括号自动对齐

如何从 JSON 数组数据输出中删除大括号 []?

VBA搜索值并从列表中删除(for循环太慢)

从tkinter标签中删除花括号

Qt使用QJsonDocument、QJsonObject、QJsonArray解析JSON