@@ -784,19 +784,37 @@ void TestQgsField::convertCompatible()
784
784
QVariant vZero = 0 ;
785
785
QVERIFY ( intField.convertCompatible ( vZero ) );
786
786
787
- // Test json field conversion
788
- const QgsField jsonField ( QStringLiteral ( " json" ), QVariant::String, QStringLiteral ( " json" ) );
789
- QVariant jsonValue = QVariant::fromValue ( QVariantList () << 1 << 5 << 8 );
790
- QVERIFY ( jsonField.convertCompatible ( jsonValue ) );
791
- QCOMPARE ( jsonValue.type (), QVariant::String );
792
- QCOMPARE ( jsonValue, QString ( " [1,5,8]" ) );
793
- QVariantMap variantMap;
794
- variantMap.insert ( QStringLiteral ( " a" ), 1 );
795
- variantMap.insert ( QStringLiteral ( " c" ), 3 );
796
- jsonValue = QVariant::fromValue ( variantMap );
797
- QVERIFY ( jsonField.convertCompatible ( jsonValue ) );
798
- QCOMPARE ( jsonValue.type (), QVariant::String );
799
- QCOMPARE ( jsonValue, QString ( " {\" a\" :1,\" c\" :3}" ) );
787
+ // Test string-based json field conversion
788
+ {
789
+ const QgsField jsonField ( QStringLiteral ( " json" ), QVariant::String, QStringLiteral ( " json" ) );
790
+ QVariant jsonValue = QVariant::fromValue ( QVariantList () << 1 << 5 << 8 );
791
+ QVERIFY ( jsonField.convertCompatible ( jsonValue ) );
792
+ QCOMPARE ( jsonValue.type (), QVariant::String );
793
+ QCOMPARE ( jsonValue, QString ( " [1,5,8]" ) );
794
+ QVariantMap variantMap;
795
+ variantMap.insert ( QStringLiteral ( " a" ), 1 );
796
+ variantMap.insert ( QStringLiteral ( " c" ), 3 );
797
+ jsonValue = QVariant::fromValue ( variantMap );
798
+ QVERIFY ( jsonField.convertCompatible ( jsonValue ) );
799
+ QCOMPARE ( jsonValue.type (), QVariant::String );
800
+ QCOMPARE ( jsonValue, QString ( " {\" a\" :1,\" c\" :3}" ) );
801
+ }
802
+
803
+ // Test map-based json field (i.e. OGR geopackage JSON fields) conversion
804
+ {
805
+ const QgsField jsonField ( QStringLiteral ( " json" ), QVariant::Map, QStringLiteral ( " json" ) );
806
+ QVariant jsonValue = QVariant::fromValue ( QVariantList () << 1 << 5 << 8 );
807
+ QVERIFY ( jsonField.convertCompatible ( jsonValue ) );
808
+ QCOMPARE ( jsonValue.type (), QVariant::List );
809
+ QCOMPARE ( jsonValue, QVariantList () << 1 << 5 << 8 );
810
+ QVariantMap variantMap;
811
+ variantMap.insert ( QStringLiteral ( " a" ), 1 );
812
+ variantMap.insert ( QStringLiteral ( " c" ), 3 );
813
+ jsonValue = QVariant::fromValue ( variantMap );
814
+ QVERIFY ( jsonField.convertCompatible ( jsonValue ) );
815
+ QCOMPARE ( jsonValue.type (), QVariant::Map );
816
+ QCOMPARE ( jsonValue, variantMap );
817
+ }
800
818
801
819
// geometry field conversion
802
820
const QgsField geometryField ( QStringLiteral ( " geometry" ), QVariant::UserType, QStringLiteral ( " geometry" ) );
0 commit comments