jvar
JS inspired Variant and Json
json.h
00001 // Copyright (c) 2014 Yasser Asmi
00002 // Released under the MIT License (http://opensource.org/licenses/MIT)
00003 
00004 #ifndef _JSON_H
00005 #define _JSON_H
00006 
00007 #include "str.h"
00008 #include "var.h"
00009 
00010 namespace jvar
00011 {
00012 
00016 class JsonParser : public Parser
00017 {
00018 public:
00026     JsonParser(Variant& outvar, const char* jsontxt, uint flags = 0);
00027 
00028     enum
00029     {
00033         FLAG_FLEXQUOTES = 0x1,
00037         FLAG_OBJECTONLY = 0x2,
00041         FLAG_ARRAYONLY = 0x4
00042     };
00043 
00044 protected:
00045     void parseObject(Variant& var);
00046     void parseMembers(Variant& var);
00047     void parseArray(Variant& var);
00048     void parseElements(Variant& var);
00049     void parseValue(Variant& var);
00050     void parseNum(Variant& var);
00051     void parseString(Variant& var);
00052 
00053     bool isString(const std::string& s, bool requirequotes);
00054     inline bool isArray(const std::string& s)
00055     {
00056         return s.compare("[") == 0;
00057     }
00058     inline bool isObject(const std::string& s)
00059     {
00060         return s.compare("{") == 0;
00061     }
00062     inline bool isNum(const std::string& s)
00063     {
00064         int l = s.length();
00065         if (l >= 1)
00066         {
00067             if (isdigit(s[0]) || s[0] == '-')
00068             {
00069                 return true;
00070             }
00071         }
00072         return false;
00073     }
00074 
00075 protected:
00076     uint mFlags;
00077 };
00078 
00079 } // jvar
00080 
00081 #endif // _JSON_H
 All Classes Functions Variables Enumerator