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. Qt Websocket sending json
Forum Updated to NodeBB v4.3 + New Features

Qt Websocket sending json

Scheduled Pinned Locked Moved Unsolved General and Desktop
14 Posts 4 Posters 2.2k 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #4

    Hi,

    Exactly as @Christian-Ehrlicher wrote: make a QString out of the QByteArray generated by toJson.

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    1 Reply Last reply
    0
    • K Offline
      K Offline
      Kris Revi
      wrote on last edited by
      #5

      like this?

      void Socket::sendBinary(const QString &bName, const QJsonValue bValue)
      {    
          QJsonObject obj;
          obj.insert("seq", "{'fx':0}");
          QJsonDocument doc(obj);
          QString strJson(doc.toJson(QJsonDocument::Compact));
      
          webSocket.sendTextMessage(strJson);
      }
      
      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #6

        QString::fromUtf8 since you know that QJsonDocument::toJson returns an UTF-8 encoded document.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        K 1 Reply Last reply
        0
        • SGaistS SGaist

          QString::fromUtf8 since you know that QJsonDocument::toJson returns an UTF-8 encoded document.

          K Offline
          K Offline
          Kris Revi
          wrote on last edited by Kris Revi
          #7

          @SGaist am i doing something wrong?

          void Socket::sendBinary(const QString &bName, const QJsonValue bValue)
          {
              QJsonObject obj;
              obj.insert("seq", "{'fx':10}");
              QJsonDocument doc(obj);
              QString strJson(doc.toJson(QJsonDocument::Compact));
              QString s2 = QString::fromUtf8(strJson.toUtf8().constData());
          
              webSocket.sendTextMessage(s2);
          
              qDebug() << s2;
          
          }
          
          JonBJ SGaistS 2 Replies Last reply
          0
          • K Kris Revi

            @SGaist am i doing something wrong?

            void Socket::sendBinary(const QString &bName, const QJsonValue bValue)
            {
                QJsonObject obj;
                obj.insert("seq", "{'fx':10}");
                QJsonDocument doc(obj);
                QString strJson(doc.toJson(QJsonDocument::Compact));
                QString s2 = QString::fromUtf8(strJson.toUtf8().constData());
            
                webSocket.sendTextMessage(s2);
            
                qDebug() << s2;
            
            }
            
            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by
            #8

            @Kris-Revi Why, what are you finding that is wrong?

            K 2 Replies Last reply
            0
            • JonBJ JonB

              @Kris-Revi Why, what are you finding that is wrong?

              K Offline
              K Offline
              Kris Revi
              wrote on last edited by
              #9

              @JonB this is the ouput

              "{\"seq\":\"{'fx':10}\"}"
              

              but on the ESP32 that controlls the Led Strip the pattern does not change

              im using the WLED software installed on the ESP32 and im trying to make a simple App in Qt to controll it via Websocket! i can connect and i can easily change brightness by sending "bri", 0-255

              but to change pattern i was told to send {"seg":{"fx":0}}

              JonBJ 1 Reply Last reply
              0
              • JonBJ JonB

                @Kris-Revi Why, what are you finding that is wrong?

                K Offline
                K Offline
                Kris Revi
                wrote on last edited by
                #10

                @JonB as you can see here

                https://kno.wled.ge/interfaces/json-api/

                    "seg": [{
                      "start": 0,
                      "stop": 20,
                      "len": 20,
                      "col": [
                        [255, 160, 0, 0],
                        [0, 0, 0, 0],
                        [0, 0, 0, 0]
                      ],
                      "fx": 0,
                      "sx": 127,
                      "ix": 127,
                      "pal": 0,
                      "sel": true,
                      "rev": false,
                      "cln": -1
                    }]
                
                1 Reply Last reply
                0
                • K Kris Revi

                  @JonB this is the ouput

                  "{\"seq\":\"{'fx':10}\"}"
                  

                  but on the ESP32 that controlls the Led Strip the pattern does not change

                  im using the WLED software installed on the ESP32 and im trying to make a simple App in Qt to controll it via Websocket! i can connect and i can easily change brightness by sending "bri", 0-255

                  but to change pattern i was told to send {"seg":{"fx":0}}

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

                  @Kris-Revi said in Qt Websocket sending json:

                  "{\"seq\":\"{'fx':10}\"}"

                  {"seg":{"fx":0}}

                  First, these are similar. The debugger (if that's what you're using to view output, you do not say) with show literal "s as \".

                  Where I think you are showing a difference:

                  obj.insert("seq", "{'fx':10}");
                  

                  You are inserting a single object with the literal string "{'fx':10}" as its value. But {"seg":{"fx":0}} looks more like an outer object with object {"fx":0} as its value, so you are not constructing your JSON correctly. But that has nothing to do with websocket or how you send the JSON.

                  K 1 Reply Last reply
                  0
                  • JonBJ JonB

                    @Kris-Revi said in Qt Websocket sending json:

                    "{\"seq\":\"{'fx':10}\"}"

                    {"seg":{"fx":0}}

                    First, these are similar. The debugger (if that's what you're using to view output, you do not say) with show literal "s as \".

                    Where I think you are showing a difference:

                    obj.insert("seq", "{'fx':10}");
                    

                    You are inserting a single object with the literal string "{'fx':10}" as its value. But {"seg":{"fx":0}} looks more like an outer object with object {"fx":0} as its value, so you are not constructing your JSON correctly. But that has nothing to do with websocket or how you send the JSON.

                    K Offline
                    K Offline
                    Kris Revi
                    wrote on last edited by
                    #12

                    @JonB said in Qt Websocket sending json:

                    First, these are similar. The debugger (if that's what you're using to view output, you do not say)

                    yea the debugger (Application Output)...

                    how do i construct the json right with the outer object? i have only done the "easy" ("bri", 0-255)....

                    JonBJ 1 Reply Last reply
                    0
                    • K Kris Revi

                      @JonB said in Qt Websocket sending json:

                      First, these are similar. The debugger (if that's what you're using to view output, you do not say)

                      yea the debugger (Application Output)...

                      how do i construct the json right with the outer object? i have only done the "easy" ("bri", 0-255)....

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

                      @Kris-Revi
                      I haven't looked up what the available functions are, but I imagine you need something more like:

                          QJsonObject obj. obj2;
                          obj2.insert("fx", 10);
                          obj.insert("seq", obj2);
                      
                      1 Reply Last reply
                      1
                      • K Kris Revi

                        @SGaist am i doing something wrong?

                        void Socket::sendBinary(const QString &bName, const QJsonValue bValue)
                        {
                            QJsonObject obj;
                            obj.insert("seq", "{'fx':10}");
                            QJsonDocument doc(obj);
                            QString strJson(doc.toJson(QJsonDocument::Compact));
                            QString s2 = QString::fromUtf8(strJson.toUtf8().constData());
                        
                            webSocket.sendTextMessage(s2);
                        
                            qDebug() << s2;
                        
                        }
                        
                        SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #14

                        @Kris-Revi said in Qt Websocket sending json:

                        @SGaist am i doing something wrong?

                        void Socket::sendBinary(const QString &bName, const QJsonValue bValue)
                        {
                            QJsonObject obj;
                            obj.insert("seq", "{'fx':10}");
                            QJsonDocument doc(obj);
                            QString strJson(doc.toJson(QJsonDocument::Compact));
                            QString s2 = QString::fromUtf8(strJson.toUtf8().constData());
                        
                            webSocket.sendTextMessage(s2);
                        
                            qDebug() << s2;
                        
                        }
                        

                        Two things in fact:
                        First, the single quotes around fx, it's invalid.
                        Second, the triple conversion. There's no need for s2.

                        QByteArray jsonMessage(doc.toJson(QJsonDocument::Compact));
                        QString stringMessage = QString::fromUtf8(jsonMessage);
                        

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        1

                        • Login

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