Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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); }
}
Esempio n. 4
0
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();
}
Esempio n. 5
0
	// 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;
		}
	}
Esempio n. 6
0
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;
}
Esempio n. 7
0
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;
}
Esempio n. 8
0
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;
}
Esempio n. 9
0
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);
    
    
}
Esempio n. 10
0
/**
 * @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();
 }