void JSONElement::append(const JSONElement& element) { if(!_json) { return; } switch(element.getType()) { case cJSON_False: cJSON_AddFalseToObject(_json, element.getName().mb_str(wxConvUTF8).data()); break; case cJSON_True: cJSON_AddTrueToObject(_json, element.getName().mb_str(wxConvUTF8).data()); break; case cJSON_NULL: cJSON_AddNullToObject(_json, element.getName().mb_str(wxConvUTF8).data()); break; case cJSON_Number: cJSON_AddNumberToObject(_json, element.getName().mb_str(wxConvUTF8).data(), element.getValue().GetLong()); break; case cJSON_String: cJSON_AddStringToObject(_json, element.getName().mb_str(wxConvUTF8).data(), element.getValue().GetString().mb_str(wxConvUTF8).data()); break; case cJSON_Array: case cJSON_Object: cJSON_AddItemToObject(_json, element.getName().mb_str(wxConvUTF8).data(), element._json); break; } }
void JSONElement::arrayAppend(const JSONElement& element) { if(!_json) { return; } cJSON* p = NULL; switch(element.getType()) { case cJSON_False: p = cJSON_CreateFalse(); break; case cJSON_True: p = cJSON_CreateTrue(); break; case cJSON_NULL: p = cJSON_CreateNull(); break; case cJSON_Number: p = cJSON_CreateNumber(element.getValue().GetDouble()); break; case cJSON_String: p = cJSON_CreateString(element.getValue().GetString().mb_str(wxConvUTF8).data()); break; case cJSON_Array: case cJSON_Object: p = element._json; break; } if(p) { cJSON_AddItemToArray(_json, p); } }
string JSONUtil::getDocumentStr(const JSONElement& doc) { string jsonText; if(doc.getType()==JSONElement::JSON_OBJECT) jsonText += "{"; else jsonText += "["; if(doc.hasChildren()) { for (int var = 0; var < (int)doc.getChildren().size(); ++var) { JSONElement* child = doc.getChildren().at(var); if(doc.getType()==JSONElement::JSON_OBJECT) jsonText += "\"" + child->getName() + "\":"; if(child->getType()==JSONElement::JSON_OBJECT || child->getType()==JSONElement::JSON_ARRAY) { jsonText += getDocumentStr(*child); } else { if(child->getType()==JSONElement::JSON_STRING) jsonText += "\"" + child->getValue() + "\""; else jsonText += child->getValue(); } if(var!=(int)doc.getChildren().size()-1) { jsonText += ", "; } } } if(doc.getType()==JSONElement::JSON_OBJECT) jsonText += "}"; else jsonText += "]"; return jsonText; }
void* JSONSerialize::getObjectPrimitiveValue(void* _1, string className, string propName) { JSONElement* root = (JSONElement*)_1; if((className=="signed" || className=="int" || className=="signed int")) { int *vt = new int; *vt = CastUtil::lexical_cast<int>(root->getValue()); return vt; } else if((className=="unsigned" || className=="unsigned int")) { unsigned int *vt = new unsigned int; *vt = CastUtil::lexical_cast<unsigned int>(root->getValue()); return vt; } else if((className=="short" || className=="short int" || className=="signed short" || className=="signed short int")) { short *vt = new short; *vt = CastUtil::lexical_cast<short>(root->getValue()); return vt; } else if((className=="unsigned short" || className=="unsigned short int")) { unsigned short *vt = new unsigned short; *vt = CastUtil::lexical_cast<unsigned short>(root->getValue()); return vt; } else if((className=="long" || className=="long int" || className=="signed long" || className=="signed long int")) { long *vt = new long; *vt = CastUtil::lexical_cast<long>(root->getValue()); return vt; } else if((className=="unsigned long" || className=="unsigned long int")) { unsigned long *vt = new unsigned long; *vt = CastUtil::lexical_cast<unsigned long>(root->getValue()); return vt; } else if((className=="long long" || className=="long long int" || className=="signed long long int")) { long long *vt = new long long; *vt = CastUtil::lexical_cast<long long>(root->getValue()); return vt; } else if((className=="unsigned long long" || className=="unsigned long long int")) { unsigned long long *vt = new unsigned long long; *vt = CastUtil::lexical_cast<unsigned long long>(root->getValue()); return vt; } else if((className=="char" || className=="signed char")) { char *vt = new char; *vt = root->getValue().at(0); return vt; } else if(className=="unsigned char") { unsigned char *vt = new unsigned char; *vt = root->getValue().at(0); return vt; } else if(className=="Date") { DateFormat formt("yyyy-mm-dd hh:mi:ss"); return formt.parse(root->getValue()); } else if(className=="BinaryData") { return BinaryData::unSerilaize(root->getValue()); } else if(className=="float") { float *vt = new float; *vt = CastUtil::lexical_cast<float>(root->getValue()); return vt; } else if(className=="double") { double *vt = new double; *vt = CastUtil::lexical_cast<double>(root->getValue()); return vt; } else if(className=="long double") { long double *vt = new long double; *vt = CastUtil::lexical_cast<long double>(root->getValue()); return vt; } else if(className=="bool") { bool *vt = new bool; *vt = CastUtil::lexical_cast<bool>(root->getValue()); return vt; } else if(className=="std::string" || className=="string") { string *vt = new string; *vt = root->getValue(); return vt; } return NULL; }
void JSONSerialize::addPrimitiveElementToContainer(void* _1, int counter, string className, void* cont, string container) { JSONElement* root = (JSONElement*)_1; JSONElement ele = *(root->getChildren().at(counter)); if(className=="std::string" || className=="string") { string retVal = ele.getValue(); addValueToNestedContainer(container, retVal, cont); } else if(className=="int") { int retVal = CastUtil::lexical_cast<int>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="short") { short retVal = CastUtil::lexical_cast<short>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="long") { long retVal = CastUtil::lexical_cast<long>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="long long") { long long retVal = CastUtil::lexical_cast<long long>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="long double") { long double retVal = CastUtil::lexical_cast<long double>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="unsigned int") { unsigned int retVal = CastUtil::lexical_cast<unsigned int>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="unsigned short") { unsigned short retVal = CastUtil::lexical_cast<unsigned short>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="unsigned long") { unsigned long retVal = CastUtil::lexical_cast<unsigned long>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="unsigned long long") { unsigned long long retVal = CastUtil::lexical_cast<unsigned long long>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="float") { float retVal = CastUtil::lexical_cast<float>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="double") { double retVal = CastUtil::lexical_cast<double>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="bool") { bool retVal = CastUtil::lexical_cast<bool>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="char") { char retVal = CastUtil::lexical_cast<char>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } else if(className=="unsigned char") { unsigned char retVal = CastUtil::lexical_cast<unsigned char>(ele.getValue()); addValueToNestedContainer(container, retVal, cont); } }