cbool cjson_set_bool_idx(cjson* pJson, int idx, cbool b) { if(!pJson) { return 0; } cJSON* lp_dest_json = pJson->child; if(!lp_dest_json || lp_dest_json->type != cJSON_Array) { return 0; } if(cJSON_GetArrayItem(lp_dest_json, idx)!= NULL) { cJSON_ReplaceItemInArray(lp_dest_json, idx, (b ? cJSON_CreateTrue() : cJSON_CreateFalse()) ); } else { cJSON_AddItemToArray(lp_dest_json, (b ? cJSON_CreateTrue() : cJSON_CreateFalse()) ); } return 1; }
cbool cjson_set_bool(cjson* pJson, const char* name, cbool b) { if(!pJson || !name) { return 0; } cJSON* lp_dest_json = pJson->child; if(!lp_dest_json ||lp_dest_json->type != cJSON_Object) { return 0; } if(cJSON_GetObjectItem(lp_dest_json, name)!= NULL) { cJSON_ReplaceItemInObject(lp_dest_json, name, (b ? cJSON_CreateTrue() : cJSON_CreateFalse()) ); } else { cJSON_AddItemToObject(lp_dest_json, name, (b ? cJSON_CreateTrue() : cJSON_CreateFalse()) ); } return 1; }
void JSONItem::arrayAppend(const JSONItem& 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); } }
cJSON *Value::toCJSON(const Value &value) { switch (value.type()) { case Value::Type_Boolean: return value.toBool() ? cJSON_CreateTrue() : cJSON_CreateFalse(); case Value::Type_Date: case Value::Type_Integer: return cJSON_CreateNumber(value.toInteger()); case Value::Type_Double: return cJSON_CreateNumber(value.toDouble()); case Value::Type_String: return cJSON_CreateString(value.toString().constData()); case Value::Type_List: { cJSON *array = cJSON_CreateArray(); for (const auto &v : *value.listPtr()) cJSON_AddItemToArray(array, toCJSON(v)); return array; } case Value::Type_Map: { cJSON *object = cJSON_CreateObject(); for (const auto &v : *value.mapPtr()) cJSON_AddItemToObject(object, v.first.constData(), v.second.toCJSON(v.second)); return object; } case Value::Type_Invalid: break; case Value::Type_Undefined: break; case Value::Type_Custom: if (std::shared_ptr<Value::Custom> custom = value.toCustom()) { cJSON *ret = cJSON_CreateString(custom->toString().constData()); if (ret) { ret->type = cJSON_RawString; return ret; } } break; } return cJSON_CreateNull(); }
// lua_to_json inline cJSON* lua_to_json(lua_State* L){ if(lua_objlen(L, -1) > 0){ cJSON* ele =cJSON_CreateArray(); const int len =lua_objlen(L, -1); for(int i=1; i<=len; ++i){ lua_rawgeti(L, -1, i); if(lua_isnil(L, -1)){ cJSON_AddItemToArray(ele, cJSON_CreateNull()); } else if(lua_isboolean(L, -1)){ if(lua_toboolean(L, -1)){ cJSON_AddItemToArray(ele, cJSON_CreateTrue()); } else{ cJSON_AddItemToArray(ele, cJSON_CreateFalse()); } } else if(lua_isnumber(L, -1)){ cJSON_AddItemToArray(ele, cJSON_CreateNumber(lua_tonumber(L, -1))); } else if(lua_isstring(L, -1)){ cJSON_AddItemToArray(ele, cJSON_CreateString(lua_tostring(L, -1))); } else if(lua_istable(L, -1)){ cJSON_AddItemToArray(ele, lua_to_json(L)); } lua_pop(L, 1); } return ele; } else{ cJSON* ele =cJSON_CreateObject(); lua_pushnil(L); while(0 != lua_next(L, -2)){ if(lua_isstring(L, -2)){ const char* name =lua_tostring(L, -2); if(lua_isboolean(L, -1)){ if(lua_toboolean(L, -1)){ cJSON_AddTrueToObject(ele, name); } else{ cJSON_AddFalseToObject(ele, name); } } else if(lua_isnumber(L, -1)){ cJSON_AddNumberToObject(ele, name, lua_tonumber(L, -1)); } else if(lua_isstring(L, -1)){ cJSON_AddStringToObject(ele, name, lua_tostring(L, -1)); } else if(lua_istable(L, -1)){ cJSON_AddItemToObject(ele, name, lua_to_json(L)); } } lua_pop(L, 1); } return ele; } }
static cJSON * azy_value_serialize_basic_json(const Eina_Value *val) { switch (azy_value_util_type_get(val)) { case AZY_VALUE_INT: { int int_val = -1; eina_value_get(val, &int_val); return cJSON_CreateNumber(int_val); } case AZY_VALUE_TIME: { time_t t; struct tm *tim; char buf[1024]; eina_value_get(val, &t); tim = localtime(&t); strftime(buf, sizeof(buf), "%Y%m%dT%H:%M:%S", tim); return cJSON_CreateString(buf); } case AZY_VALUE_STRING: case AZY_VALUE_BASE64: { const char *str_val; eina_value_get(val, &str_val); return cJSON_CreateString(str_val); } case AZY_VALUE_BOOL: { Eina_Bool bool_val; eina_value_get(val, &bool_val); if (bool_val) return cJSON_CreateTrue(); return cJSON_CreateFalse(); } case AZY_VALUE_DOUBLE: { double dbl_val = -1; eina_value_get(val, &dbl_val); return cJSON_CreateNumber(dbl_val); } default: break; } return NULL; }
cJSON *JSONNode::spawnNode(int nodeType, char *name) { cJSON *node = NULL; if(nodeType == cJSON_Object) { node = cJSON_CreateObject(); node -> string = name; }else if(nodeType == cJSON_Array){ node = cJSON_CreateArray(); node -> string = name; }else if(nodeType == cJSON_True){ node = cJSON_CreateTrue(); node -> string = name; }else if(nodeType == cJSON_False){ node = cJSON_CreateFalse(); node -> string = name; }else if(nodeType == cJSON_NULL){ node = cJSON_CreateNull(); node -> string = name; } return node; }
static cJSON *tocJSON(const QVariant &variant) { cJSON *ret = 0; switch (variant.type()) { case QVariant::Invalid: ret = cJSON_CreateNull(); break; case QVariant::Bool: ret = (variant.toBool() ? cJSON_CreateTrue() : cJSON_CreateFalse()); break; case QVariant::Int: ret = cJSON_CreateNumber(variant.toInt()); break; case QVariant::UInt: ret = cJSON_CreateNumber(variant.toUInt()); break; case QVariant::LongLong: ret = cJSON_CreateNumber(variant.toLongLong()); break; case QVariant::ULongLong: ret = cJSON_CreateNumber(variant.toULongLong()); break; case QVariant::Double: ret = cJSON_CreateNumber(variant.toDouble()); break; case QVariant::String: ret = cJSON_CreateString(variant.toString().toUtf8().constData()); break; case QVariant::ByteArray: ret = cJSON_CreateString(variant.toByteArray().constData()); break; case QVariant::List: ret = cJSON_CreateArray(); Q_ASSERT(ret); foreach(const QVariant &item, variant.toList()) cJSON_AddItemToArray(ret, tocJSON(item)); break; case QVariant::Map: { ret = cJSON_CreateObject(); Q_ASSERT(ret); const QVariantMap map = variant.toMap(); for (QMap<QString, QVariant>::const_iterator it = map.begin(); it != map.end(); ++it) cJSON_AddItemToObject(ret, it.key().toUtf8().constData(), tocJSON(it.value())); break; } case QVariant::StringList: ret = cJSON_CreateArray(); Q_ASSERT(ret); foreach(const QString &string, variant.toStringList()) cJSON_AddItemToArray(ret, tocJSON(string)); break; default: qWarning("Can't convert variant to json %d", variant.type()); } return ret; }
void createJsonText1() { cJSON *root, *fmt; root = cJSON_CreateObject(); cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack(\"Bee\")Nimble")); cJSON_AddItemToObject(root, "format", fmt = cJSON_CreateObject()); cJSON_AddItemToObject(fmt, "type", cJSON_CreateString("rect")); cJSON_AddItemToObject(fmt, "width", cJSON_CreateNumber(1920)); cJSON_AddNumberToObject(fmt, "height", 1080); cJSON_AddFalseToObject(fmt, "interface"); cJSON_AddItemToObject(fmt, "isMan", cJSON_CreateFalse()); char *out; out = cJSON_Print(fmt); printf("%s\n", out); free(out); out = cJSON_Print(root); printf("%s\n", out); cJSON_Delete(root); free(out); }
/** * @brief Set the named boolean property. * @param [in] name The name of the property to add. * @param [in] value The boolean to add to the object. * @return N/A. */ void JsonObject::setBoolean(std::string name, bool value) { cJSON_AddItemToObject(m_node, name.c_str(), value?cJSON_CreateTrue():cJSON_CreateFalse()); } // setBoolean
virtual void visit(const CCBool *p) { m_json = p->getValue() ? cJSON_CreateTrue() :cJSON_CreateFalse(); }