On Wednesday, 9 June 2021 10:21:28 PDT Jason H wrote: > > Stop using QVariantMapList. You want a QVariantMap. > > I think you meant QVariantList?: > QVariantMap map { > {"err", QVariant()}, > {"letters", QVariantList { > QVariantMap {{"a",1}}, > QVariantMap {{"b",2}}, > QVariantMap {{"c",3}} > }} > };
No, I had really meant QVariantMap when I wrote, but I had no way of knowing what *you* wanted. There's no JSON type that is a homogeneous list of maps, so I had to infer what you had wanted. > I had hoped that by using QList<QVariantMap> that I could omit the 3 > QVariantMaps above. I think that's a limitation of the initialiser list. Does it still happen with the CTAD deduction guides from Qt 6? > But anyway, it seems my mistake was thinking that QVariant hold a > QList<QVariantMap>, the best thing possible is the more general case of > QVariantList, and this can be a heterogeneous collection of QVariants. > Neither compiler nor Qt is capable of enforcing homogeneity as a QList of > QVariantMaps AND having that collection being a QVariant itself, in a > declaration. It would have to be built at runtime. > > Did I get that right? QVariant can hold any type, so long as it's declared as a metatype and registered (registration is automatic on first use). Your problem is that QJsonDocument::fromVariant doesn't know about those extra types: you can use QList<QVariantMap>, QVector<QVariantMap>, std::vector<QVariantMap> or anything else. That doesn't make the type supported by the conversion routine. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel DPG Cloud Engineering _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest