• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ cJSON_DetachItemFromObject函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中cJSON_DetachItemFromObject函数的典型用法代码示例。如果您正苦于以下问题:C++ cJSON_DetachItemFromObject函数的具体用法?C++ cJSON_DetachItemFromObject怎么用?C++ cJSON_DetachItemFromObject使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了cJSON_DetachItemFromObject函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: cJSONUtils_MergePatch

cJSON* cJSONUtils_MergePatch(cJSON *target, cJSON *patch)
{
    if (!patch || (patch->type != cJSON_Object))
    {
        /* scalar value, array or NULL, just duplicate */
        cJSON_Delete(target);
        return cJSON_Duplicate(patch, 1);
    }

    if (!target || (target->type != cJSON_Object))
    {
        cJSON_Delete(target);
        target = cJSON_CreateObject();
    }

    patch = patch->child;
    while (patch)
    {
        if (patch->type == cJSON_NULL)
        {
            /* NULL is the indicator to remove a value, see RFC7396 */
            cJSON_DeleteItemFromObject(target, patch->string);
        }
        else
        {
            cJSON *replaceme = cJSON_DetachItemFromObject(target, patch->string);
            cJSON_AddItemToObject(target, patch->string, cJSONUtils_MergePatch(replaceme, patch));
        }
        patch = patch->next;
    }
    return target;
}
开发者ID:DuongNguyenHai,项目名称:Aquaponics,代码行数:32,代码来源:cJSON_Utils.c


示例2: cJSON_Delete

static cJSON *merge_patch(cJSON *target, const cJSON * const patch, const cJSON_bool case_sensitive)
{
    cJSON *patch_child = NULL;

    if (!cJSON_IsObject(patch))
    {
        /* scalar value, array or NULL, just duplicate */
        cJSON_Delete(target);
        return cJSON_Duplicate(patch, 1);
    }

    if (!cJSON_IsObject(target))
    {
        cJSON_Delete(target);
        target = cJSON_CreateObject();
    }

    patch_child = patch->child;
    while (patch_child != NULL)
    {
        if (cJSON_IsNull(patch_child))
        {
            /* NULL is the indicator to remove a value, see RFC7396 */
            if (case_sensitive)
            {
                cJSON_DeleteItemFromObjectCaseSensitive(target, patch_child->string);
            }
            else
            {
                cJSON_DeleteItemFromObject(target, patch_child->string);
            }
        }
        else
        {
            cJSON *replace_me = NULL;
            cJSON *replacement = NULL;

            if (case_sensitive)
            {
                replace_me = cJSON_DetachItemFromObjectCaseSensitive(target, patch_child->string);
            }
            else
            {
                replace_me = cJSON_DetachItemFromObject(target, patch_child->string);
            }

            replacement = merge_patch(replace_me, patch_child, case_sensitive);
            if (replacement == NULL)
            {
                return NULL;
            }

            cJSON_AddItemToObject(target, patch_child->string, replacement);
        }
        patch_child = patch_child->next;
    }
    return target;
}
开发者ID:HanYu1983,项目名称:HanWork,代码行数:58,代码来源:cJSON_Utils.c


示例3: cJSONUtils_strdup

/* detach an item at the given path */
static cJSON *detach_path(cJSON *object, const unsigned char *path, const cJSON_bool case_sensitive)
{
    unsigned char *parent_pointer = NULL;
    unsigned char *child_pointer = NULL;
    cJSON *parent = NULL;
    cJSON *detached_item = NULL;

    /* copy path and split it in parent and child */
    parent_pointer = cJSONUtils_strdup(path);
    if (parent_pointer == NULL) {
        goto cleanup;
    }

    child_pointer = (unsigned char*)strrchr((char*)parent_pointer, '/'); /* last '/' */
    if (child_pointer == NULL)
    {
        goto cleanup;
    }
    /* split strings */
    child_pointer[0] = '\0';
    child_pointer++;

    parent = get_item_from_pointer(object, (char*)parent_pointer, case_sensitive);
    decode_pointer_inplace(child_pointer);

    if (cJSON_IsArray(parent))
    {
        size_t index = 0;
        if (!decode_array_index_from_pointer(child_pointer, &index))
        {
            goto cleanup;
        }
        detached_item = detach_item_from_array(parent, index);
    }
    else if (cJSON_IsObject(parent))
    {
        detached_item = cJSON_DetachItemFromObject(parent, (char*)child_pointer);
    }
    else
    {
        /* Couldn't find object to remove child from. */
        goto cleanup;
    }

cleanup:
    if (parent_pointer != NULL)
    {
        cJSON_free(parent_pointer);
    }

    return detached_item;
}
开发者ID:HanYu1983,项目名称:HanWork,代码行数:53,代码来源:cJSON_Utils.c


示例4: cJSONUtils_strdup

static cJSON *cJSONUtils_PatchDetach(cJSON *object, const unsigned char *path)
{
    unsigned char *parentptr = NULL;
    unsigned char *childptr = NULL;
    cJSON *parent = NULL;
    cJSON *ret = NULL;

    /* copy path and split it in parent and child */
    parentptr = cJSONUtils_strdup(path);
    if (parentptr == NULL) {
        return NULL;
    }

    childptr = (unsigned char*)strrchr((char*)parentptr, '/'); /* last '/' */
    if (childptr == NULL)
    {
        free(parentptr);
        return NULL;
    }
    /* split strings */
    *childptr++ = '\0';

    parent = cJSONUtils_GetPointer(object, (char*)parentptr);
    cJSONUtils_InplaceDecodePointerString(childptr);

    if (!parent)
    {
        /* Couldn't find object to remove child from. */
        ret = NULL;
    }
    else if (cJSON_IsArray(parent))
    {
        ret = cJSON_DetachItemFromArray(parent, atoi((char*)childptr));
    }
    else if (cJSON_IsObject(parent))
    {
        ret = cJSON_DetachItemFromObject(parent, (char*)childptr);
    }
    free(parentptr);

    /* return the detachted item */
    return ret;
}
开发者ID:gatzka,项目名称:cJSON,代码行数:43,代码来源:cJSON_Utils.c


示例5: cJSONUtils_strdup

static cJSON *cJSONUtils_PatchDetach(cJSON *object, const char *path)
{
    char *parentptr = 0;
    char *childptr = 0;
    cJSON *parent = 0;
    cJSON *ret = 0;

    /* copy path and split it in parent and child */
    parentptr = cJSONUtils_strdup(path);
    childptr = strrchr(parentptr, '/'); /* last '/' */
    if (childptr)
    {
        /* split strings */
        *childptr++ = '\0';
    }
    parent = cJSONUtils_GetPointer(object, parentptr);
    cJSONUtils_InplaceDecodePointerString(childptr);

    if (!parent)
    {
        /* Couldn't find object to remove child from. */
        ret = 0;
    }
    else if (parent->type == cJSON_Array)
    {
        ret = cJSON_DetachItemFromArray(parent, atoi(childptr));
    }
    else if (parent->type == cJSON_Object)
    {
        ret = cJSON_DetachItemFromObject(parent, childptr);
    }
    free(parentptr);

    /* return the detachted item */
    return ret;
}
开发者ID:DuongNguyenHai,项目名称:Aquaponics,代码行数:36,代码来源:cJSON_Utils.c


示例6: cJSON_DeleteItemFromObject

void ICACHE_FLASH_ATTR
cJSON_DeleteItemFromObject(cJSON *object, const char *string)
{
    cJSON_Delete(cJSON_DetachItemFromObject(object, string));
}
开发者ID:Slyer74,项目名称:esp-ginx,代码行数:5,代码来源:cJson.c


示例7: cJSON_DeleteItemFromObject

void   cJSON_DeleteItemFromObject(cJSON *object,const char *string) {cJSON_Delete(cJSON_DetachItemFromObject(object,string));}
开发者ID:alterto,项目名称:watersystem,代码行数:1,代码来源:cJSON.c


示例8: SWITCH_DECLARE

SWITCH_DECLARE(void)  cJSON_DeleteItemFromObject(cJSON *object,const char *string) {cJSON_Delete(cJSON_DetachItemFromObject(object,string));}
开发者ID:bodji,项目名称:freeswitch,代码行数:1,代码来源:switch_json.c


示例9: cJSON_DetachItemFromObject

JSONItem JSONItem::detachProperty(const wxString& name)
{
    if(!_json) { return JSONItem(NULL); }
    cJSON* j = cJSON_DetachItemFromObject(_json, name.c_str());
    return JSONItem(j);
}
开发者ID:eranif,项目名称:codelite,代码行数:6,代码来源:JSON.cpp


示例10: pthread_cleanup_push

static void *st_poolThread(void* pArg)
{
	char buf[BUFFER_SIZE];
	cJSON *msg = NULL;

	pthread_cleanup_push(st_poolThreadCleanup, NULL);
	for(;;)
	{
		pthread_testcancel();

		if (client_read( &pool.socket, buf, sizeof(buf)) <= 0)
		{
			usleep(50000);
			continue;
		}

		RPC_TRACE("st: <- %s\n", buf);
		msg = cJSON_Parse( buf );
		if( !msg )
		{
			eprintf("%s: failed to parse message: '%s'\n", __FUNCTION__, buf);
			continue;
		}

		elcdRpcType_t type = elcdRpcInvalid;
		cJSON *value = NULL;
		cJSON *id = cJSON_GetObjectItem(msg, "id");
		if( !id || id->type != cJSON_Number || id->valueint == 0 )
		{
			eprintf("%s: missing id\n", __FUNCTION__);
			goto type_known;
		}
		value = cJSON_GetObjectItem( msg, "method" );
		if( value != NULL && value->type == cJSON_String )
		{
			type = elcdRpcRequest;
			goto type_known;
		}
		value = cJSON_DetachItemFromObject( msg, "result" );
		if( value != NULL && value->type != cJSON_NULL )
		{
			type = elcdRpcResult;
			goto type_known;
		}
		value = cJSON_DetachItemFromObject( msg, "error" );
		if( value != NULL && value->type != cJSON_NULL )
		{
			type = elcdRpcError;
		}
type_known:
		dprintf( "%s:   <- %s type %d\n", __FUNCTION__, buf, type);
		switch( type )
		{
			case elcdRpcInvalid:
				eprintf("%s: malformed message: '%s'\n", __FUNCTION__, buf);
				break;
			case elcdRpcRequest:
				/// TODO
				eprintf("%s: don't know what to do with request %s\n", __FUNCTION__, value->valuestring);
				break;
			case elcdRpcError:
			case elcdRpcResult:
			{
				int i;
				for( i = 0; i < RPC_POOL_SIZE; i++ )
					if( (unsigned int)id->valueint == pool.waiting[i].id )
					{
                        if(pool.waiting[i].callback)
                        {
                            pool.waiting[i].callback( type, value, pool.waiting[i].pArg );
                        }
						st_poolFreeAt(i);
						break;
					}
				if( i >= RPC_POOL_SIZE )
				{
					eprintf("%s: lost message %6u\n", __FUNCTION__, (unsigned int)id->valueint);
					cJSON_Delete(value);
				}
				st_poolPrint();
				break;
			}
		}

		cJSON_Delete(msg);
		msg = NULL;
	}
	pthread_cleanup_pop(1);

	pthread_exit(NULL);
}
开发者ID:ElecardSTB,项目名称:elecard-apps,代码行数:91,代码来源:stsdk.c


示例11: cJSON_DeleteItemFromObject

void   cJSON_DeleteItemFromObject(cJSON *object,const char *string, ngx_pool_t *pool) {cJSON_Delete(cJSON_DetachItemFromObject(object,string), pool);}
开发者ID:1nfused,项目名称:RedPitaya,代码行数:1,代码来源:cJSON.c


示例12: process_task

static cJSON* process_task( cJSON* input )
{
  struct TaskCommandHandler* handler;
  UTV_RESULT result;
  UTV_BOOL failedRequest = UTV_FALSE;
  int idx;
  cJSON* requests;
  cJSON* request;
  cJSON* command;
  cJSON* inputs;
  cJSON* commandName;
  UTV_UINT32 commandNameLength;
  cJSON* output;
  cJSON* responses;
  cJSON* response;
  cJSON* outputs;

  responses = cJSON_CreateArray();

  requests = cJSON_GetObjectItem( input, "REQUESTS" );

  for ( idx = 0; idx < cJSON_GetArraySize( requests ); idx++ )
  {
    request = cJSON_GetArrayItem( requests, idx );
    command = cJSON_DetachItemFromObject( request, "COMMAND" );
    inputs = cJSON_GetObjectItem( request, "INPUTS" );
    commandName = cJSON_GetObjectItem( command, "NAME" );
    commandNameLength = UtvStrlen( (UTV_BYTE*) commandName->valuestring );

    response = cJSON_CreateObject();
    outputs = cJSON_CreateArray();

    cJSON_AddItemToObject( response, "COMMAND", command );

    if ( !failedRequest )
    {
      handler = s_handler_list;

      while ( handler != NULL )
      {
        if ( commandNameLength == UtvStrlen( handler->command_name ) )
        {
          if ( !UtvMemcmp( commandName->valuestring, handler->command_name, commandNameLength ) )
          {
            result = handler->command_handler( inputs, outputs );
            break;
          }
        }

        handler = handler->next;
      }

      if ( NULL == handler )
      {
        UtvMessage( UTV_LEVEL_WARN,
                    "%s: Unknown command \"%s\"",
                    __FUNCTION__,
                    commandName->valuestring );

        result = UTV_LIVE_SUPPORT_COMMAND_UNKNOWN;
      }

      failedRequest = ( result != UTV_OK );
    }
    else
    {
        UtvMessage( UTV_LEVEL_WARN,
                    "%s: Command \"%s\" not processed",
                    __FUNCTION__,
                    commandName->valuestring );

      result = UTV_LIVE_SUPPORT_COMMAND_NOT_PROCESSED;
    }

    cJSON_AddNumberToObject( response, "RESULT", result );
    cJSON_AddItemToObject( response, "OUTPUTS", outputs );
    cJSON_AddItemToArray( responses, response );
  }

  output = cJSON_CreateObject();
  cJSON_AddItemToObject( output, "RESPONSES", responses );

  return ( output );
}
开发者ID:TooLogic,项目名称:android_device_softwinner,代码行数:84,代码来源:livesupport-task.c



注:本文中的cJSON_DetachItemFromObject函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ cJSON_Duplicate函数代码示例发布时间:2022-05-30
下一篇:
C++ cJSON_Delete函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap