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. Create Json using QJsonDocument
Forum Updated to NodeBB v4.3 + New Features

Create Json using QJsonDocument

Scheduled Pinned Locked Moved Solved General and Desktop
jsonqjsondocument
3 Posts 2 Posters 33.4k Views 2 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.
  • 4 Offline
    4 Offline
    4j1th
    wrote on last edited by 4j1th
    #1

    How can I create a Json like this

    {
        "FirstName": "John",
        "LastName": "Doe",
        "Age": 43,
        "Address": {
            "Street": "Downing Street 10",
            "City": "London",
            "Country": "Great Britain"
        },
        "Phone numbers": [
            "+44 1234567",
            "+44 2345678"
        ]
    }
    

    I created a sample code but I struck in the middle

    QJsonDocument  json;
    QJsonArray recordsArray;
    QJsonObject  recordObject;
    
    recordObject.insert("FirstName", QJsonValue::fromVariant("John"));
    recordObject.insert("LastName", QJsonValue::fromVariant("Doe"));
    recordObject.insert("Age", QJsonValue::fromVariant(43));
    
    // ????
    
    recordsArray.push_back(recordObject);
    json.setArray(recordsArray);
    

    Pardon my English
    Thank you.

    1 Reply Last reply
    0
    • Paul ColbyP Offline
      Paul ColbyP Offline
      Paul Colby
      wrote on last edited by
      #2

      One way to create the JSON document you presented:

          QJsonObject recordObject;
          recordObject.insert("FirstName", QJsonValue::fromVariant("John"));
          recordObject.insert("LastName", QJsonValue::fromVariant("Doe"));
          recordObject.insert("Age", QJsonValue::fromVariant(43));
      
          QJsonObject addressObject;
          addressObject.insert("Street", "Downing Street 10");
          addressObject.insert("City", "London");
          addressObject.insert("Country", "Great Britain");
          recordObject.insert("Address", addressObject);
      
          QJsonArray phoneNumbersArray;
          phoneNumbersArray.push_back("+44 1234567");
          phoneNumbersArray.push_back("+44 2345678");
          recordObject.insert("Phone Numbers", phoneNumbersArray);
      
          QJsonDocument doc(recordObject);
          qDebug() << doc.toJson();
      

      Output:

      {
          "Address": {
              "City": "London",
              "Country": "Great Britain",
              "Street": "Downing Street 10"
          },
          "Age": 43,
          "FirstName": "John",
          "LastName": "Doe",
          "Phone Numbers": [
              "+44 1234567",
              "+44 2345678"
          ]
      }
      

      recordsArray.push_back(recordObject);
      json.setArray(recordsArray);

      This suggests you might be trying to make the top-level document an array, in which case:

          QJsonObject recordObject;
          recordObject.insert("FirstName", QJsonValue::fromVariant("John"));
          recordObject.insert("LastName", QJsonValue::fromVariant("Doe"));
          recordObject.insert("Age", QJsonValue::fromVariant(43));
      
          QJsonObject addressObject;
          addressObject.insert("Street", "Downing Street 10");
          addressObject.insert("City", "London");
          addressObject.insert("Country", "Great Britain");
          recordObject.insert("Address", addressObject);
      
          QJsonArray phoneNumbersArray;
          phoneNumbersArray.push_back("+44 1234567");
          phoneNumbersArray.push_back("+44 2345678");
          recordObject.insert("Phone Numbers", phoneNumbersArray);
      
          QJsonArray recordsArray;
          recordsArray.push_back(recordObject);
          QJsonDocument doc(recordsArray);
          qDebug() << doc.toJson();
      

      Output:

      [
          {
              "Address": {
                  "City": "London",
                  "Country": "Great Britain",
                  "Street": "Downing Street 10"
              },
              "Age": 43,
              "FirstName": "John",
              "LastName": "Doe",
              "Phone Numbers": [
                  "+44 1234567",
                  "+44 2345678"
              ]
          }
      ]
      

      I hope that helps :)

      4 1 Reply Last reply
      4
      • Paul ColbyP Paul Colby

        One way to create the JSON document you presented:

            QJsonObject recordObject;
            recordObject.insert("FirstName", QJsonValue::fromVariant("John"));
            recordObject.insert("LastName", QJsonValue::fromVariant("Doe"));
            recordObject.insert("Age", QJsonValue::fromVariant(43));
        
            QJsonObject addressObject;
            addressObject.insert("Street", "Downing Street 10");
            addressObject.insert("City", "London");
            addressObject.insert("Country", "Great Britain");
            recordObject.insert("Address", addressObject);
        
            QJsonArray phoneNumbersArray;
            phoneNumbersArray.push_back("+44 1234567");
            phoneNumbersArray.push_back("+44 2345678");
            recordObject.insert("Phone Numbers", phoneNumbersArray);
        
            QJsonDocument doc(recordObject);
            qDebug() << doc.toJson();
        

        Output:

        {
            "Address": {
                "City": "London",
                "Country": "Great Britain",
                "Street": "Downing Street 10"
            },
            "Age": 43,
            "FirstName": "John",
            "LastName": "Doe",
            "Phone Numbers": [
                "+44 1234567",
                "+44 2345678"
            ]
        }
        

        recordsArray.push_back(recordObject);
        json.setArray(recordsArray);

        This suggests you might be trying to make the top-level document an array, in which case:

            QJsonObject recordObject;
            recordObject.insert("FirstName", QJsonValue::fromVariant("John"));
            recordObject.insert("LastName", QJsonValue::fromVariant("Doe"));
            recordObject.insert("Age", QJsonValue::fromVariant(43));
        
            QJsonObject addressObject;
            addressObject.insert("Street", "Downing Street 10");
            addressObject.insert("City", "London");
            addressObject.insert("Country", "Great Britain");
            recordObject.insert("Address", addressObject);
        
            QJsonArray phoneNumbersArray;
            phoneNumbersArray.push_back("+44 1234567");
            phoneNumbersArray.push_back("+44 2345678");
            recordObject.insert("Phone Numbers", phoneNumbersArray);
        
            QJsonArray recordsArray;
            recordsArray.push_back(recordObject);
            QJsonDocument doc(recordsArray);
            qDebug() << doc.toJson();
        

        Output:

        [
            {
                "Address": {
                    "City": "London",
                    "Country": "Great Britain",
                    "Street": "Downing Street 10"
                },
                "Age": 43,
                "FirstName": "John",
                "LastName": "Doe",
                "Phone Numbers": [
                    "+44 1234567",
                    "+44 2345678"
                ]
            }
        ]
        

        I hope that helps :)

        4 Offline
        4 Offline
        4j1th
        wrote on last edited by
        #3

        @Paul-Colby Thank you

        Pardon my English
        Thank you.

        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