本文整理汇总了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;未经允许,请勿转载。 |
请发表评论