defuze.me  Client
jsonparser.hpp
00001 /**************************************************************************
00002 ** defuze.me Epitech Innovative Project
00003 **
00004 ** Copyright 2010
00005 **   Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard
00006 **   Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier
00007 **
00008 ** All rights reserved.
00009 **************************************************************************/
00010 
00011 namespace Network {
00012     class JsonParser;
00013 }
00014 
00015 #ifndef JSONPARSER_HPP
00016 #define JSONPARSER_HPP
00017 
00018 #include <QScriptEngine>
00019 #include <QScriptValueIterator>
00020 #include <QString>
00021 #include "parser.hpp"
00022 
00023 namespace Network
00024 {
00028     class JsonParser : public Parser
00029     {
00030     public:
00031         JsonParser();
00032 
00033         QVariant    parse(const QByteArray& data) const;
00034         QByteArray  serialize(const QVariant& data) const;
00035 
00036         static void test();                                                                 
00037     private:
00038         QVariant    partialParse(const QScriptValue& value) const;
00039         QByteArray  partialSerialize(const QVariant& value, const short spaces) const;
00040 
00041         QByteArray  join( const QList<QByteArray>& list, const QByteArray& sep) const;      
00042         QString     sanitizeString(const QString& input) const;                             
00043         QByteArray  indent(const short spaces) const;                                       
00044     };
00045 }
00046 
00047 #endif // JSONPARSER_HPP