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. JSON parsing with QtJson...
Forum Updated to NodeBB v4.3 + New Features

JSON parsing with QtJson...

Scheduled Pinned Locked Moved Solved General and Desktop
22 Posts 7 Posters 3.6k Views 3 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.
  • C Online
    C Online
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on 25 Nov 2018, 07:15 last edited by Christian Ehrlicher
    #11

    Sorry but I don't understand python that much to help you.

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 25 Nov 2018, 08:01 last edited by
      #12

      Hi

      {
        "aircraft":[
          {
            "geography":{
              "latitude":42.6581,
              "longitude":5.51009,
              "altitude":11585.4,
              "direction":16
            },
            "speed":{
              "horizontal":861.641,
              "isGround":0,
              "vertical":0
            },
            "departure":{
              "iataCode":"DJE",
              "icaoCode":"DTTJ"
            },
            "arrival":{
              "iataCode":"ORY",
              "icaoCode":"LFPO"
            },
            "aircraft":{
              "regNumber":"FGZHS",
              "icaoCode":"B738",
              "icao24":"3964F2",
              "iataCode":"B738"
            },
            "airline":{
              "iataCode":"TO",
              "icaoCode":"TVF"
            },
            "flight":{
              "iataNumber":"TO3875",
              "icaoNumber":"TVF3875",
              "number":"3875"
            },
            "system":{
              "updated":"1543087861",
              "squawk":"7376"
            },
            "status":"started"
          }
        ]
      }
      

      Would obj.aircraft[0].geography
      not be an object ? with keys latitude,longitude etc ?

      1 Reply Last reply
      0
      • F filipdns
        24 Nov 2018, 19:39

        @Christian-Ehrlicher I try to work with it like array:

        var obj =JSON.parse(res)
        console.log(obj.aircraft[0].geography)

        but the return message is [object Object]...

        K Offline
        K Offline
        kshegunov
        Moderators
        wrote on 25 Nov 2018, 12:16 last edited by
        #13

        Firstly, what is this language? JS?
        Secondly, what is JSON in your code and where does it come from?

        Read and abide by the Qt Code of Conduct

        F 1 Reply Last reply 25 Nov 2018, 16:09
        0
        • K kshegunov
          25 Nov 2018, 12:16

          Firstly, what is this language? JS?
          Secondly, what is JSON in your code and where does it come from?

          F Offline
          F Offline
          filipdns
          wrote on 25 Nov 2018, 16:09 last edited by
          #14

          @kshegunov Hello,

          Yes, it's JS language to get the network response.

          the JSON response is come from http://aviation-edge.com

          with request like http://aviation-edge.com/v2/public/flights?key=2a8619-db5a5c&regNum=ECMJT

          K 1 Reply Last reply 25 Nov 2018, 18:28
          0
          • F filipdns
            25 Nov 2018, 16:09

            @kshegunov Hello,

            Yes, it's JS language to get the network response.

            the JSON response is come from http://aviation-edge.com

            with request like http://aviation-edge.com/v2/public/flights?key=2a8619-db5a5c&regNum=ECMJT

            K Offline
            K Offline
            kshegunov
            Moderators
            wrote on 25 Nov 2018, 18:28 last edited by
            #15

            I am now completely confused. How and why is this JS executed and what relation does it bear to Qt? Is this a QML function?

            Read and abide by the Qt Code of Conduct

            F 1 Reply Last reply 25 Nov 2018, 18:44
            0
            • K kshegunov
              25 Nov 2018, 18:28

              I am now completely confused. How and why is this JS executed and what relation does it bear to Qt? Is this a QML function?

              F Offline
              F Offline
              filipdns
              wrote on 25 Nov 2018, 18:44 last edited by
              #16

              @kshegunov Hi, it has no link with qt, it's just in case some one can help me to parse JSON with keys.

              But did what I need parsing in JS but it's not very beautiful code like it is example:

                              res=doc.responseText//JS.data(doc.responseText)
                              //console.log(res)
                              //var obj =JSON.parse(res)
                              var error="{\"error\": \"No Record Found or Flight not currently detected by receivers. \" }"
                              if(res!==error)
                              {
                                  var res1=res.replace("[","")
                                  var res2=res1.replace("{","")
                                  var res3=res2.split("{")
                                  var res4=res3[1]
                                  var res5= res4.split(",")
                                  var res6=res5[0]+res5[1]+res5[2]+res5[3]
                                  var res7=res6
                                  var res8=res7.replace("\n","")
                                  var res9=res8.replace("            ","")
                                  var res10=res9.replace("\"","")
                                  var res11=res10.split(":")
                                  var res12=res11[0].replace("\"","") //text: latitude
                                  var res13=res11[1].split("\n")
                                  var res14=parseFloat(res13[0])      //valeur latitude
                                  var res15=res13[1].replace("            \"","")
                                  var res16=res15.replace("\"","")    //text longitude
                                  var res17=parseFloat(res11[2].split("\n")[0])// valeur longitude
                                  var res18=parseInt(parseFloat(res11[3].split("\n")[0])*3.28084/100) // valeur altitude
                                  var res19 = parseInt(res11[4].split("\n")[0]) // valeur cap
              
              1 Reply Last reply
              0
              • F filipdns
                24 Nov 2018, 13:44

                Hello,

                I'm trying to parse value from JSON file:

                [ { "geography": { "latitude": 51.1392, "longitude": 11.1481, "altitude": 11280.5, "direction": 68.9 }, "speed": { "horizontal": 805.37, "isGround": 0, "vertical": -3.90144 }, "departure": { "iataCode": "BVA", "icaoCode": "LFOB" }, "arrival": { "iataCode": "CIA", "icaoCode": "LIRA" }, "aircraft": { "regNumber": "EIGDT", "icaoCode": "B738", "icao24": "", "iataCode": "B738" }, "airline": { "iataCode": "FR", "icaoCode": "RYR" }, "flight": { "iataNumber": "FR92QB", "icaoNumber": "RYR92QB", "number": "92QB" }, "system": { "updated": "1543065538", "squawk": "1127" }, "status": "en-route" }, { "geography": { "latitude": 43.4357, "longitude": 18.9397, "altitude": 11280.5, "direction": 136 }, "speed": { "horizontal": 914.949, "isGround": 0, "vertical": -5.20192 }, "departure": { "iataCode": "BVA", "icaoCode": "LFOB" }, "arrival": { "iataCode": "SKG", "icaoCode": "LGTS" }, "aircraft": { "regNumber": "EIEKI", "icaoCode": "B738", "icao24": "4CA808", "iataCode": "B738" }, "airline": { "iataCode": "FR", "icaoCode": "RYR" }, "flight": { "iataNumber": "FR3094", "icaoNumber": "RYR3094", "number": "3094" }, "system": { "updated": "1543065479", "squawk": "664" }, "status": "en-route" } ]
                

                with

                
                   QByteArray data= reply->readAll();
                   QString datastring = QString::fromStdString(data.toStdString());
                    //qDebug()<<data;
                
                    bool ok;
                    // datastring is a QString containing the JSON data
                    QtJson::JsonObject result = QtJson::parse(datastring, ok).toMap();
                
                    if(!ok) {
                      qFatal("An error occurred during parsing");
                    }
                
                    qDebug() << "latitude:" << result["latitude"].toString();
                

                but the result say only:

                latitude: ""

                What I did wrong?

                [Moved to General and Desktop ~kshegunov]

                Taz742T Offline
                Taz742T Offline
                Taz742
                wrote on 25 Nov 2018, 20:37 last edited by
                #17

                @filipdns
                It is not a valid json file. https://forum.qt.io/topic/64314/json-access-data-in-multidimensional-arrays/8

                Do what you want.

                F 1 Reply Last reply 25 Nov 2018, 21:23
                3
                • Taz742T Taz742
                  25 Nov 2018, 20:37

                  @filipdns
                  It is not a valid json file. https://forum.qt.io/topic/64314/json-access-data-in-multidimensional-arrays/8

                  F Offline
                  F Offline
                  filipdns
                  wrote on 25 Nov 2018, 21:23 last edited by
                  #18

                  @Taz742 thank you, I will stay with my poor code then lol

                  aha_1980A 1 Reply Last reply 25 Nov 2018, 21:26
                  0
                  • F filipdns
                    25 Nov 2018, 21:23

                    @Taz742 thank you, I will stay with my poor code then lol

                    aha_1980A Offline
                    aha_1980A Offline
                    aha_1980
                    Lifetime Qt Champion
                    wrote on 25 Nov 2018, 21:26 last edited by
                    #19

                    @filipdns

                    Did you read the post @Taz742 linked?

                    Your top-level structure is a JSON array, so you must convert the document to a QJsonArray, not a QJsonObject.

                    Using a QJsonArray should work for you, too.

                    Qt has to stay free or it will die.

                    F 1 Reply Last reply 26 Nov 2018, 15:30
                    1
                    • aha_1980A aha_1980
                      25 Nov 2018, 21:26

                      @filipdns

                      Did you read the post @Taz742 linked?

                      Your top-level structure is a JSON array, so you must convert the document to a QJsonArray, not a QJsonObject.

                      Using a QJsonArray should work for you, too.

                      F Offline
                      F Offline
                      filipdns
                      wrote on 26 Nov 2018, 15:30 last edited by filipdns
                      #20

                      @aha_1980 Hello, I start to read yes, I'm trying to understand how do that in js, I found documentation on QJsonArray only for c++ at the moment

                      K 1 Reply Last reply 26 Nov 2018, 16:40
                      0
                      • F filipdns
                        26 Nov 2018, 15:30

                        @aha_1980 Hello, I start to read yes, I'm trying to understand how do that in js, I found documentation on QJsonArray only for c++ at the moment

                        K Offline
                        K Offline
                        kshegunov
                        Moderators
                        wrote on 26 Nov 2018, 16:40 last edited by kshegunov
                        #21

                        In JS you just parse it, as it's a natively supported.

                        var myJson = JSON.eval(jsonText);
                        

                        If it's a valid json, then properties are available directly as any other java script object, or in your case:

                        var obj =JSON.parse(res);
                        console.log("Latitude: " + obj.aircraft[0].geography.latitude);
                        

                        I still don't get the relevance, though.

                        Read and abide by the Qt Code of Conduct

                        1 Reply Last reply
                        2
                        • M Offline
                          M Offline
                          makcorps
                          Banned
                          wrote on 7 Mar 2020, 08:14 last edited by
                          #22
                          This post is deleted!
                          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