libqt4json  1.0.0-beta1
Serializator / Deserializator JSON for Qt4 QVariant and QObject
 All Classes Files Functions
libqt4json Documentation

Below is an example of how to use libqt4json

//------------------------------------------------------------------------------
#include <QObject>
#include <QDate>
#include <iostream>
#include <libqt4json.h>
//------------------------------------------------------------------------------
using namespace std;
//------------------------------------------------------------------------------
class CBirthDay : public QObject {
Q_OBJECT
Q_PROPERTY(int day READ getDay)
Q_PROPERTY(QString monthName READ getMonthName);
Q_PROPERTY(int year READ getYear);
public:
CBirthDay(QDate date) { this->date=date; }
int getDay(void) { return date.day(); }
QString getMonthName(void) { return QDate::longMonthName(date.month()); }
int getMonth(void) { return date.month(); }
int getYear(void) { return date.year(); }
private:
QDate date;
};
//------------------------------------------------------------------------------
class CPerson : public QObject {
Q_OBJECT
Q_PROPERTY(QString name READ getName)
Q_PROPERTY(int age READ getAge);
Q_PROPERTY(QObject* birthDay READ getBirthDay);
public:
CPerson(QString name, CBirthDay *birthDay) { this->name=name; this->birthDay=birthDay; }
QString getName(void) { return name; }
int getAge(void) {
QDate curDate=QDate::currentDate();
int curYear=curDate.year();
int curMonth=curDate.month();
int curDay=curDate.day();
int age=curYear-birthDay->getYear();
if(curMonth < birthDay->getMonth() || (curMonth == birthDay->getMonth() && curDay < birthDay->getDay())) {
return age-1;
}
return age;
}
CBirthDay *getBirthDay(void) { return birthDay; }
private:
QString name;
CBirthDay *birthDay;
};
//------------------------------------------------------------------------------
int main(int argc, char **argv) {
CJson *json=new CJson();
CPerson *parent1=new CPerson("Dad", new CBirthDay(QDate::fromString("07/04/1977", "dd/MM/yyyy")));
CPerson *parent2=new CPerson("Mum", new CBirthDay(QDate::fromString("15/07/1977", "dd/MM/yyyy")));
CPerson *child1=new CPerson("Cindy", new CBirthDay(QDate::fromString("01/10/2011", "dd/MM/yyyy")));
QVariantMap family;
QVariantList parents;
QVariantList childs;
parents.append(QVariant::fromValue((QObject *)parent1));
parents.append(QVariant::fromValue((QObject *)parent2));
childs.append(QVariant::fromValue((QObject *)child1));
family.insert("parents", QVariant(parents));
family.insert("childs", QVariant(childs));
QString sJson=json->toString(QVariant(family));
cout << QObject::tr("Generated json").toStdString() << ":" << endl;
cout << sJson.toStdString();
cout << endl;
return 0;
}
//------------------------------------------------------------------------------

This will produce :

{
"childs": [
{
"name": "Cindy",
"age": 1,
"birthDay": {
"day": 1,
"monthName": "octobre",
"year": 2011
}
}
],
"parents": [
{
"name": "Dad",
"age": 35,
"birthDay": {
"day": 7,
"monthName": "avril",
"year": 1977
}
},
{
"name": "Mum",
"age": 35,
"birthDay": {
"day": 15,
"monthName": "juillet",
"year": 1977
}
}
]
}