@@ -1408,17 +1408,15 @@ OGRGeometryH QgsOgrProvider::ConvertGeometryIfNecessary( OGRGeometryH hGeom )
1408
1408
return OGR_G_ForceTo ( hGeom, layerGeomType, nullptr );
1409
1409
}
1410
1410
1411
- QString QgsOgrProvider::jsonStringValue ( const QVariant &value, const QVariant::Type &type ) const
1411
+ QString QgsOgrProvider::jsonStringValue ( const QVariant &value ) const
1412
1412
{
1413
- switch ( type )
1413
+ QString stringValue = QString::fromUtf8 ( QJsonDocument::fromVariant ( value ).toJson ().constData () );
1414
+ if ( stringValue.isEmpty () )
1414
1415
{
1415
- case QVariant::Map:
1416
- return QString::fromUtf8 ( QJsonDocument::fromVariant ( value.toMap () ).toJson ().data () );
1417
- case QVariant::List:
1418
- return QString::fromUtf8 ( QJsonDocument::fromVariant ( value.toList () ).toJson ().data () );
1419
- default :
1420
- return value.toString ();
1416
+ // store as string, because it's no valid QJson value
1417
+ stringValue = value.toString ();
1421
1418
}
1419
+ return stringValue;
1422
1420
}
1423
1421
1424
1422
bool QgsOgrProvider::addFeaturePrivate ( QgsFeature &f, Flags flags )
@@ -1550,7 +1548,7 @@ bool QgsOgrProvider::addFeaturePrivate( QgsFeature &f, Flags flags )
1550
1548
1551
1549
#if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(2,4,0)
1552
1550
if ( OGR_Fld_GetSubType ( fldDef ) == OFSTJSON )
1553
- stringValue = jsonStringValue ( attrVal, attrVal. type () );
1551
+ stringValue = jsonStringValue ( attrVal );
1554
1552
else
1555
1553
{
1556
1554
stringValue = attrVal.toString ();
@@ -2139,7 +2137,7 @@ bool QgsOgrProvider::changeAttributeValues( const QgsChangedAttributesMap &attr_
2139
2137
QString stringValue;
2140
2138
#if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(2,4,0)
2141
2139
if ( OGR_Fld_GetSubType ( fd ) == OFSTJSON )
2142
- stringValue = jsonStringValue ( it2.value (), it2-> type () );
2140
+ stringValue = jsonStringValue ( it2.value () );
2143
2141
else
2144
2142
stringValue = it2->toString ();
2145
2143
#else
0 commit comments