コード例 #1
0
ファイル: cjson.c プロジェクト: baifanmvp/bitIdx
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;
}
コード例 #2
0
ファイル: cjson.c プロジェクト: baifanmvp/bitIdx
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;
}
コード例 #3
0
ファイル: JSON.cpp プロジェクト: eranif/codelite
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); }
}
コード例 #4
0
ファイル: Value.cpp プロジェクト: hjanetzek/rct
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();
}
コード例 #5
0
void conference_event_adv_la(conference_obj_t *conference, conference_member_t *member, switch_bool_t join)
{

	//if (switch_core_session_media_flow(member->session, SWITCH_MEDIA_TYPE_VIDEO) == SWITCH_MEDIA_FLOW_SENDONLY) {
	switch_channel_set_flag(member->channel, CF_VIDEO_REFRESH_REQ);
	switch_core_media_gen_key_frame(member->session);
	//}

	if (conference && conference->la && member->session &&
		!switch_channel_test_flag(member->channel, CF_VIDEO_ONLY)) {
		cJSON *msg, *data;
		const char *uuid = switch_core_session_get_uuid(member->session);
		const char *cookie = switch_channel_get_variable(member->channel, "event_channel_cookie");
		const char *event_channel = cookie ? cookie : uuid;
		switch_event_t *variables;
		switch_event_header_t *hp;

		msg = cJSON_CreateObject();
		data = json_add_child_obj(msg, "pvtData", NULL);

		cJSON_AddItemToObject(msg, "eventChannel", cJSON_CreateString(event_channel));
		cJSON_AddItemToObject(msg, "eventType", cJSON_CreateString("channelPvtData"));

		cJSON_AddItemToObject(data, "action", cJSON_CreateString(join ? "conference-liveArray-join" : "conference-liveArray-part"));
		cJSON_AddItemToObject(data, "laChannel", cJSON_CreateString(conference->la_event_channel));
		cJSON_AddItemToObject(data, "laName", cJSON_CreateString(conference->la_name));
		cJSON_AddItemToObject(data, "role", cJSON_CreateString(conference_utils_member_test_flag(member, MFLAG_MOD) ? "moderator" : "participant"));
		cJSON_AddItemToObject(data, "chatID", cJSON_CreateString(conference->chat_id));
		cJSON_AddItemToObject(data, "canvasCount", cJSON_CreateNumber(conference->canvas_count));

		if (conference_utils_member_test_flag(member, MFLAG_SECOND_SCREEN)) {
			cJSON_AddItemToObject(data, "secondScreen", cJSON_CreateTrue());
		}

		if (conference_utils_member_test_flag(member, MFLAG_MOD)) {
			cJSON_AddItemToObject(data, "modChannel", cJSON_CreateString(conference->mod_event_channel));
		}

		cJSON_AddItemToObject(data, "chatChannel", cJSON_CreateString(conference->chat_event_channel));

		switch_core_get_variables(&variables);
		for (hp = variables->headers; hp; hp = hp->next) {
			if (!strncasecmp(hp->name, "conference_verto_", 17)) {
				char *var = hp->name + 17;
				if (var) {
					cJSON_AddItemToObject(data, var, cJSON_CreateString(hp->value));
				}
			}
		}
		switch_event_destroy(&variables);

		switch_event_channel_broadcast(event_channel, &msg, "mod_conference", conference_globals.event_channel_id);

		if (cookie) {
			switch_event_channel_permission_modify(cookie, conference->la_event_channel, join);
			switch_event_channel_permission_modify(cookie, conference->mod_event_channel, join);
			switch_event_channel_permission_modify(cookie, conference->chat_event_channel, join);
		}
	}
}
コード例 #6
0
ファイル: JsonForLua.cpp プロジェクト: AllenWangxiao/winner
	// 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;
		}
	}
コード例 #7
0
ファイル: azy_content_json.c プロジェクト: gfriloux/maelstrom
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;
}
コード例 #8
0
ファイル: stsdk.c プロジェクト: ElecardSTB/elecard-apps
void st_setTuneParams(uint32_t adapter, cJSON *params, EIT_media_config_t *media)
{
	if(media == NULL) {
		eprintf("%s(): Wrong argument: media not setted!\n", __func__);
		return;
	}
	cJSON_AddItemToObject(params, "tuner", cJSON_CreateNumber(adapter));
	switch(dvbfe_getType(adapter)) {
		case SYS_DVBT:
		case SYS_DVBT2:
			cJSON_AddItemToObject(params, "stream", cJSON_CreateNumber(media->dvb_t.plp_id));
//			cJSON_AddItemToObject(params, "generation", cJSON_CreateNumber(media->dvb_t.generation));
			break;
		case SYS_DVBC_ANNEX_AC: {
			fe_modulation_t modulation = media->dvb_c.modulation;
			uint32_t symbolRate = media->dvb_c.symbol_rate / 1000;
			const char *modName;
			modName = getModulationName(modulation);
			if(modName) {
				cJSON_AddItemToObject(params, "modulation", cJSON_CreateString(modName));
			}
			cJSON_AddItemToObject(params, "symbolrate", cJSON_CreateNumber(symbolRate));
			break;
		}
		case SYS_DVBS: {
			int32_t vertical = media->dvb_s.polarization == 1;
			uint32_t symbolRate = media->dvb_s.symbol_rate / 1000;

			cJSON_AddItemToObject(params, "symbolrate", cJSON_CreateNumber(symbolRate));
			if(vertical) {
				cJSON_AddItemToObject(params, "vertical", cJSON_CreateTrue());
			}
			break;
		}
		case SYS_ATSC:
		case SYS_DVBC_ANNEX_B:{
			fe_modulation_t modulation = media->atsc.modulation;
			const char *modName;
			modName = getModulationName(modulation);
			if(modName) {
				cJSON_AddItemToObject(params, "modulation", cJSON_CreateString(modName));
			}
			break;
		}
		default:;
	}
}
コード例 #9
0
ファイル: test.c プロジェクト: NlxF/OpenWow
void *do_work(void *p)
{
	int sock_fd;
	sock_fd = socket(AF_INET, SOCK_STREAM, 0);

	struct sockaddr_in srv;
	srv.sin_family = AF_INET;
	srv.sin_port = htons(port);
	srv.sin_addr.s_addr = inet_addr(HOST);
	connect(sock_fd, (struct sockaddr*)&srv, sizeof(srv));

	char szBuf[50];
	snprintf(szBuf, 50, "%s %d", p, pthread_self());
	printf(szBuf);

    //use json
    cJSON *root_json = cJSON_CreateObject();
    cJSON_AddItemToObject(root_json, "needResponse", cJSON_CreateTrue());
    cJSON_AddItemToObject(root_json, "message", cJSON_CreateString(szBuf));
    cJSON_AddItemToObject(root_json, "len", cJSON_CreateNumber(strlen(szBuf)));

    char *json_str = cJSON_Print(root_json);

	/*Wow__News msg;
	wow__news__init(&msg);
	msg.needresponse = 1;
	msg.message = szBuf;
	msg.len = strlen(szBuf);
	size_t size = wow__news__get_packed_size(&msg);
	uint8_t *data = (uint8_t*)malloc(sizeof(uint8_t)*size);
	wow__news__pack(&msg, data);*/

    size_t size = strlen(json_str);
	uint8_t *pbuf = (uint8_t*)malloc(sizeof(uint8_t)*(size+1));
	crc_data(json_str, size, pbuf);

	time_t t1, t2;
	time(&t1);
	send(sock_fd, pbuf, size+1, 0);

	//recv(sock_fd, pbuf, size+1, 0);
	time(&t2);
	printf("all spend %dsec\n", t2-t1);

	free(pbuf);
}
コード例 #10
0
ファイル: JSONNode.cpp プロジェクト: HanWenfang/MumanPlatform
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;
}
コード例 #11
0
ファイル: Config.cpp プロジェクト: Andersbakken/Genesis
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;
}
コード例 #12
0
ファイル: JSON.cpp プロジェクト: LefterisAd/esp32-snippets
/**
 * @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
コード例 #13
0
 virtual void visit(const CCBool *p)
 {
     m_json = p->getValue() ? cJSON_CreateTrue() :cJSON_CreateFalse();
 }