OSDN Git Service

QJsonDocument::fromJson() optimization
authorIvailo Monev <xakepa10@gmail.com>
Thu, 1 Jun 2023 08:28:07 +0000 (11:28 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Thu, 1 Jun 2023 08:28:07 +0000 (11:28 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/core/tools/qjsondocument.cpp

index 774df68..4662d0d 100644 (file)
@@ -54,7 +54,7 @@ QVariant QJsonDocumentPrivate::jsonToVariant(const QByteArray &jsondata)
     }
 
     json_error_t jerror;
-    json_t *jroot = json_loads(jsondata.constData(), JSON_ALLOW_NUL, &jerror);
+    json_t *jroot = json_loadb(jsondata.constData(), jsondata.size(), JSON_ALLOW_NUL, &jerror);
 
     if (!jroot) {
         error = jerror.text;
@@ -86,7 +86,7 @@ QVariant QJsonDocumentPrivate::jsonToVariant(const QByteArray &jsondata)
                                     break;
                                 }
                                 case JSON_STRING: {
-                                    listvalue.append(QVariant(QString::fromUtf8(json_string_value(jarray))));
+                                    listvalue.append(QVariant(QString::fromUtf8(json_string_value(jarray), json_string_length(jarray))));
                                     break;
                                 }
                                 case JSON_INTEGER: {
@@ -119,7 +119,7 @@ QVariant QJsonDocumentPrivate::jsonToVariant(const QByteArray &jsondata)
                         break;
                     }
                     case JSON_STRING: {
-                        mapresult.insert(jkey, QVariant(QString::fromUtf8(json_string_value(jobject))));
+                        mapresult.insert(jkey, QVariant(QString::fromUtf8(json_string_value(jobject), json_string_length(jobject))));
                         break;
                     }
                     case JSON_INTEGER: {
@@ -163,7 +163,7 @@ QVariant QJsonDocumentPrivate::jsonToVariant(const QByteArray &jsondata)
                         break;
                     }
                     case JSON_STRING: {
-                        listvalue.append(QVariant(QString::fromUtf8(json_string_value(jarray))));
+                        listvalue.append(QVariant(QString::fromUtf8(json_string_value(jarray), json_string_length(jarray))));
                         break;
                     }
                     case JSON_INTEGER: {