00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00033 #ifndef JSON_H
00034 #define JSON_H
00035
00036 #include <QVariant>
00037 #include <QString>
00038
00039 namespace QtJson
00040 {
00041
00045 enum JsonToken
00046 {
00047 JsonTokenNone = 0,
00048 JsonTokenCurlyOpen = 1,
00049 JsonTokenCurlyClose = 2,
00050 JsonTokenSquaredOpen = 3,
00051 JsonTokenSquaredClose = 4,
00052 JsonTokenColon = 5,
00053 JsonTokenComma = 6,
00054 JsonTokenString = 7,
00055 JsonTokenNumber = 8,
00056 JsonTokenTrue = 9,
00057 JsonTokenFalse = 10,
00058 JsonTokenNull = 11
00059 };
00060
00067 class Json
00068 {
00069 public:
00075 static QVariant parse(const QString &json);
00076
00083 static QVariant parse(const QString &json, bool &success);
00084
00091 static QByteArray serialize(const QVariant &data);
00092
00101 static QByteArray serialize(const QVariant &data, bool &success);
00102
00103 private:
00113 static QVariant parseValue(const QString &json, int &index,
00114 bool &success);
00115
00125 static QVariant parseObject(const QString &json, int &index,
00126 bool &success);
00127
00137 static QVariant parseArray(const QString &json, int &index,
00138 bool &success);
00139
00149 static QVariant parseString(const QString &json, int &index,
00150 bool &success);
00151
00160 static QVariant parseNumber(const QString &json, int &index);
00161
00170 static int lastIndexOfNumber(const QString &json, int index);
00171
00178 static void eatWhitespace(const QString &json, int &index);
00179
00188 static int lookAhead(const QString &json, int index);
00189
00198 static int nextToken(const QString &json, int &index);
00199 };
00200
00201
00202 }
00203
00204 #endif //JSON_H