Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Passing QJsonObject works, but QJsonArray doesn't ?
Forum Updated to NodeBB v4.3 + New Features

Passing QJsonObject works, but QJsonArray doesn't ?

Scheduled Pinned Locked Moved Unsolved General and Desktop
14 Posts 3 Posters 1.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • KroMignonK KroMignon

    @SPlatten said in Passing QJsonObject works, but QJsonArray doesn't ?:

    xmleng.log is my C++ call, when I break in this function for this call, the debugger shows 0 elements for the array.

    I can not understand how you expect this to work?!?

    As far as I can understand your code, you are creating an QVariantMap not an QJsonArray.

    I am pretty sure, if you change your function signature to:

    _INVOKABLE void log(quint16 uint16Level,const QVariantMap& crobjJSON
                                                 ,const QString& crstrFile
                                                 ,long lngLine);
    

    ==> https://doc.qt.io/qt-5/qtqml-cppintegration-data.html#qvariantlist-and-qvariantmap-to-javascript-array-and-object

    I don't think QJsonArray is available on QML side.

    SPlattenS Offline
    SPlattenS Offline
    SPlatten
    wrote on last edited by SPlatten
    #5

    @KroMignon No, here is the actual prototype(s):

    Q_INVOKABLE void log(quint16 uint16Level,const QJsonArray& craryJSON
                                            ,const QString& crstrFile
                                            ,long lngLine);
    Q_INVOKABLE void log(quint16 uint16Level,const QJsonObject& crobjJSON
                                            ,const QString& crstrFile
                                            ,long lngLine);
    

    Kind Regards,
    Sy

    KroMignonK 2 Replies Last reply
    0
    • SPlattenS SPlatten

      @KroMignon No, here is the actual prototype(s):

      Q_INVOKABLE void log(quint16 uint16Level,const QJsonArray& craryJSON
                                              ,const QString& crstrFile
                                              ,long lngLine);
      Q_INVOKABLE void log(quint16 uint16Level,const QJsonObject& crobjJSON
                                              ,const QString& crstrFile
                                              ,long lngLine);
      
      KroMignonK Offline
      KroMignonK Offline
      KroMignon
      wrote on last edited by
      #6

      @SPlatten Sorry, my reply goes out too fast! I have edited it, to avoid noise on this feed.

      It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

      1 Reply Last reply
      0
      • SPlattenS SPlatten

        @KroMignon No, here is the actual prototype(s):

        Q_INVOKABLE void log(quint16 uint16Level,const QJsonArray& craryJSON
                                                ,const QString& crstrFile
                                                ,long lngLine);
        Q_INVOKABLE void log(quint16 uint16Level,const QJsonObject& crobjJSON
                                                ,const QString& crstrFile
                                                ,long lngLine);
        
        KroMignonK Offline
        KroMignonK Offline
        KroMignon
        wrote on last edited by
        #7

        @SPlatten said in Passing QJsonObject works, but QJsonArray doesn't ?:

        No, here is the actual prototype(s):

        Yes, I saw it, but as I write: I don't think QJsonArray can be created on QML side.

        I found nothing about this in Qt documentation (https://doc.qt.io/qt-5/qtqml-cppintegration-data.html).

        And, for me var objCmds = {} will be converted into a QVariantMap on C++ side

        It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

        SPlattenS 1 Reply Last reply
        0
        • KroMignonK KroMignon

          @SPlatten said in Passing QJsonObject works, but QJsonArray doesn't ?:

          No, here is the actual prototype(s):

          Yes, I saw it, but as I write: I don't think QJsonArray can be created on QML side.

          I found nothing about this in Qt documentation (https://doc.qt.io/qt-5/qtqml-cppintegration-data.html).

          And, for me var objCmds = {} will be converted into a QVariantMap on C++ side

          SPlattenS Offline
          SPlattenS Offline
          SPlatten
          wrote on last edited by
          #8

          @KroMignon , I'm not using QML at all, this is purely JavaScript calling my API routines which are in C++.

          var objCmds = {} is converted to QJsonObject correctly, but var aryCmds = [] isn't converted to QJsonArray or appears not to be.

          Kind Regards,
          Sy

          SPlattenS JonBJ 2 Replies Last reply
          0
          • SPlattenS SPlatten

            @KroMignon , I'm not using QML at all, this is purely JavaScript calling my API routines which are in C++.

            var objCmds = {} is converted to QJsonObject correctly, but var aryCmds = [] isn't converted to QJsonArray or appears not to be.

            SPlattenS Offline
            SPlattenS Offline
            SPlatten
            wrote on last edited by
            #9

            @SPlatten, can anyone help?

            Kind Regards,
            Sy

            1 Reply Last reply
            0
            • SPlattenS SPlatten

              @KroMignon , I'm not using QML at all, this is purely JavaScript calling my API routines which are in C++.

              var objCmds = {} is converted to QJsonObject correctly, but var aryCmds = [] isn't converted to QJsonArray or appears not to be.

              JonBJ Offline
              JonBJ Offline
              JonB
              wrote on last edited by
              #10

              @SPlatten said in Passing QJsonObject works, but QJsonArray doesn't ?:

              var objCmds = {} is converted to QJsonObject correctly, but var aryCmds = [] isn't converted to QJsonArray or appears not to be.

              Your code is so complex. If you want to test this theory, have you tried with a data structure which just has a var aryCmds = [...] in it, and nothing else?

              SPlattenS 1 Reply Last reply
              0
              • JonBJ JonB

                @SPlatten said in Passing QJsonObject works, but QJsonArray doesn't ?:

                var objCmds = {} is converted to QJsonObject correctly, but var aryCmds = [] isn't converted to QJsonArray or appears not to be.

                Your code is so complex. If you want to test this theory, have you tried with a data structure which just has a var aryCmds = [...] in it, and nothing else?

                SPlattenS Offline
                SPlattenS Offline
                SPlatten
                wrote on last edited by
                #11

                @JonB, the code isn't complex, looks very simple, I've tried various different and "simple" versions just passing an array, although the array has at least one element when the C++ routine is called, when it gets to the routine the array is empty.

                Kind Regards,
                Sy

                KroMignonK 1 Reply Last reply
                0
                • SPlattenS SPlatten

                  @JonB, the code isn't complex, looks very simple, I've tried various different and "simple" versions just passing an array, although the array has at least one element when the C++ routine is called, when it gets to the routine the array is empty.

                  KroMignonK Offline
                  KroMignonK Offline
                  KroMignon
                  wrote on last edited by KroMignon
                  #12

                  @SPlatten said in Passing QJsonObject works, but QJsonArray doesn't ?:

                  the code isn't complex, looks very simple, I've tried various different and "simple" versions just passing an array, although the array has at least one element when the C++ routine is called, when it gets to the routine the array is empty.

                  What I don't understand is why you expect that Qt/C++ should implicitly convert a Java array into QJsonArray?

                  It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                  SPlattenS 1 Reply Last reply
                  0
                  • KroMignonK KroMignon

                    @SPlatten said in Passing QJsonObject works, but QJsonArray doesn't ?:

                    the code isn't complex, looks very simple, I've tried various different and "simple" versions just passing an array, although the array has at least one element when the C++ routine is called, when it gets to the routine the array is empty.

                    What I don't understand is why you expect that Qt/C++ should implicitly convert a Java array into QJsonArray?

                    SPlattenS Offline
                    SPlattenS Offline
                    SPlatten
                    wrote on last edited by SPlatten
                    #13

                    @KroMignon , it isn't Java, its JavaScript and I expect the Qt API to convert the array because it does exactly that for a JavaScript object. What is the point of offering only half a solution? If JavaScript objects are processed then arrays should also be processed.

                    Kind Regards,
                    Sy

                    KroMignonK 1 Reply Last reply
                    0
                    • SPlattenS SPlatten

                      @KroMignon , it isn't Java, its JavaScript and I expect the Qt API to convert the array because it does exactly that for a JavaScript object. What is the point of offering only half a solution? If JavaScript objects are processed then arrays should also be processed.

                      KroMignonK Offline
                      KroMignonK Offline
                      KroMignon
                      wrote on last edited by
                      #14

                      @SPlatten said in Passing QJsonObject works, but QJsonArray doesn't ?:

                      it isn't Java, its JavaScript and I expect the Qt API to convert the array because it does exactly that for a JavaScript object. What is the point of offering only half a solution? If JavaScript objects are processed then arrays should also be processed.

                      Yes, you are right it is JavaScript, and JavaScript is not known as strongly typed language.
                      There are many implicit conversion done, so awaiting that this is just working seems not really serious to me.

                      I wish you good luke!

                      It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved