16 #ifndef TIANCHI_TCJSON_H
17 #define TIANCHI_TCJSON_H
19 #include <tianchi/tcglobal.h>
26 #include <QStringList>
40 vtfBool = 4, vtfDateTime=5, vtfNull=6, vtfArray=99 };
45 static QString quote(
const QString& Text);
46 static QString dequote(
const QString& S);
52 QMap<QString, TcJSONObject*> m_list;
58 QString jsonKey()
const;
59 QString jsonValue()
const;
62 const wchar_t* fromObject(
const QString& Key,
const wchar_t* ptr);
63 const wchar_t* fromArray(
const wchar_t* ptr);
65 inline QString newKey(
const QString& key)
66 {
return key.trimmed().isEmpty() ? QString::number(m_index++) : key.trimmed(); }
68 const wchar_t* parseKey(QString& Value,
const wchar_t* ptr);
69 const wchar_t* parseValue(QString Key,
const wchar_t* ptr);
70 const wchar_t* parseNumber(QString& Value,
const wchar_t* ptr);
71 static inline const wchar_t* skip(
const wchar_t* in)
73 while(in && *in && *in<=32)
81 int type()
const {
return m_type; }
82 void setType(
int value) { m_type = (ValueTypeFlag) value; }
85 void setKey(
const QString& value);
86 QVariant value()
const;
87 inline QVariant value(
const QString& key)
const
88 { QVariant ret; value(key, ret);
return ret; }
89 bool value(
const QString& key, QVariant& v)
const;
90 inline bool exists(
const QString& key)
const
92 QMap<QString, TcJSONObject*>::const_iterator child = m_list.find(key);
93 return child != m_list.constEnd() && child.key() == key;
95 inline int count()
const {
return m_list.count(); }
97 {
return m_list[key]; }
98 QList<TcJSONObject*> children()
const;
104 inline TcJSONObject* add(
const QString& key,
const char* value) {
return add(key, QString(value)); }
105 TcJSONObject* add(
const QString& key,
const QString& value);
112 inline TcJSONObject* add(
const char* value) {
return add(QString(value)); }
113 inline TcJSONObject* add(
const QString& value) {
return add(QString::number(m_index++), value); }
114 inline TcJSONObject* add(
int value) {
return add(QString::number(m_index++), value); }
115 inline TcJSONObject* add(
double value) {
return add(QString::number(m_index++), value); }
116 inline TcJSONObject* add(
bool value) {
return add(QString::number(m_index++), value); }
117 inline TcJSONObject* add(QDateTime value) {
return add(QString::number(m_index++), value); }
119 void deleteChildren(
const QString& key);
120 void clearChildren();
123 virtual QString toString()
const;
125 bool fromString(QString jsonText);
129 #endif // TIANCHI_JSON_H