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. When reading QJsonArray it gives always 0
QtWS25 Last Chance

When reading QJsonArray it gives always 0

Scheduled Pinned Locked Moved Unsolved General and Desktop
qt5qjsonarrayreading
25 Posts 7 Posters 4.2k Views
  • 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.
  • S sierdzio
    12 Feb 2021, 06:27

    @suslucoder JSON does not convert strings to numbers. So if a value is string and you try to read a double, it will always return 0.

    A workaround for this is:

    qDebug() << "Abc:" << grvArray[i].toObject()["Abc"].toVariant().toInt();
    

    Although it does come with it's problems.

    D Offline
    D Offline
    deleted286
    wrote on 12 Feb 2021, 11:07 last edited by
    #16

    @sierdzio I did it like this way. But it cant read some datas still. What should be the reason? It reads the first and last element of 1 array. And then, didnt read the second item of an array. Read the 4.element of array 2. I didnt understand

    1 Reply Last reply
    0
    • C Offline
      C Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on 12 Feb 2021, 11:09 last edited by
      #17

      Since you created the json manually you're mixing . and ,. Use the proper json notation for doubles without quotes if you want that someone else will be able to read them and don't create such files manually.

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

      D 1 Reply Last reply 12 Feb 2021, 11:18
      4
      • C Christian Ehrlicher
        12 Feb 2021, 11:09

        Since you created the json manually you're mixing . and ,. Use the proper json notation for doubles without quotes if you want that someone else will be able to read them and don't create such files manually.

        D Offline
        D Offline
        deleted286
        wrote on 12 Feb 2021, 11:18 last edited by
        #18

        @Christian-Ehrlicher I have LineEdit. I take datas from line edit on my qui, and save those datas in txt file which is formatted json. I want to take float or double nums on line edit.

        I have " " because line edit accept strings.

        P 1 Reply Last reply 12 Feb 2021, 11:26
        0
        • D deleted286
          12 Feb 2021, 11:18

          @Christian-Ehrlicher I have LineEdit. I take datas from line edit on my qui, and save those datas in txt file which is formatted json. I want to take float or double nums on line edit.

          I have " " because line edit accept strings.

          P Offline
          P Offline
          Pl45m4
          wrote on 12 Feb 2021, 11:26 last edited by Pl45m4 2 Dec 2021, 11:34
          #19

          @suslucoder said in When reading QJsonArray it gives always 0:

          I have " " because line edit accept strings.

          But you cant save strings in the same way as you save floats / doubles or ints (edit: No ints).

          @Christian-Ehrlicher said in When reading QJsonArray it gives always 0:

          It's not 5.0 but "5.0" and this is a string. See also QJsonValue::Type()

          That's what @Christian-Ehrlicher said here

          So you have to differentiate what is going to be stored in your Json.
          (If you build your Json yourself -> strings with "....." and floats with . as separator to avoid read errors)

          You can save everything as string, but then you have to convert it when reading the values again (-> also works best when using a dot as separator. Not every locale supports , as decimal separator. This is why you probably got 0)


          If debugging is the process of removing software bugs, then programming must be the process of putting them in.

          ~E. W. Dijkstra

          1 Reply Last reply
          2
          • J Offline
            J Offline
            JonB
            wrote on 12 Feb 2021, 11:41 last edited by
            #20

            @suslucoder
            ...Which is why I suggested you might choose to save/put in file 41.123 instead of string with quotes like your "41,123", then you will be storing a number and won't have to convert from a string....

            1 Reply Last reply
            2
            • C Offline
              C Offline
              Christian Ehrlicher
              Lifetime Qt Champion
              wrote on 12 Feb 2021, 11:47 last edited by
              #21

              Or use a proper QDoubleSpinbox

              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
              • P Offline
                P Offline
                Pl45m4
                wrote on 12 Feb 2021, 11:55 last edited by
                #22

                Or a QLineEdit with an input mask, so you can be sure that is input of this widget gonna be a number. Then you can write it as double to your Json.

                https://doc.qt.io/qt-5/qlineedit.html#inputMask-prop


                If debugging is the process of removing software bugs, then programming must be the process of putting them in.

                ~E. W. Dijkstra

                1 Reply Last reply
                0
                • D deleted286
                  12 Feb 2021, 11:05

                  @JonB ı didnt get my json from anywhere. I create it by myself

                  J Offline
                  J Offline
                  JonB
                  wrote on 12 Feb 2021, 12:03 last edited by
                  #23

                  @suslucoder said in When reading QJsonArray it gives always 0:

                  ı didnt get my json from anywhere. I create it by myself

                  So this is not a widget issue, at least at this stage. It's a question of OP deciding on a type to be used in the JSON.

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    sierdzio
                    Moderators
                    wrote on 13 Feb 2021, 07:45 last edited by
                    #24

                    Exactly. You should format the data properly when you save it. Then the whole problem will just go away and a plain toDouble() will work when reading the file.

                    (Z(:^

                    D 1 Reply Last reply 15 Feb 2021, 06:11
                    0
                    • S sierdzio
                      13 Feb 2021, 07:45

                      Exactly. You should format the data properly when you save it. Then the whole problem will just go away and a plain toDouble() will work when reading the file.

                      D Offline
                      D Offline
                      deleted286
                      wrote on 15 Feb 2021, 06:11 last edited by
                      #25

                      Thanks for all answers. I will reformat my json file and try it again

                      1 Reply Last reply
                      0

                      25/25

                      15 Feb 2021, 06:11

                      • Login

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