本文整理汇总了C++中cJSON_Parse函数的典型用法代码示例。如果您正苦于以下问题:C++ cJSON_Parse函数的具体用法?C++ cJSON_Parse怎么用?C++ cJSON_Parse使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cJSON_Parse函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: receiveWriteRequest
bool receiveWriteRequest(uint8_t* message) {
cJSON *root = cJSON_Parse((char*)message);
bool foundMessage = false;
if(root != NULL) {
foundMessage = true;
cJSON* nameObject = cJSON_GetObjectItem(root, "name");
if(nameObject == NULL) {
cJSON* idObject = cJSON_GetObjectItem(root, "id");
if(idObject == NULL) {
debug("Write request is malformed, "
"missing name or id: %s", message);
} else {
receiveRawWriteRequest(idObject, root);
}
} else {
receiveTranslatedWriteRequest(nameObject, root);
}
cJSON_Delete(root);
} else {
debug("No valid JSON in incoming buffer yet -- "
"if it's valid, may be out of memory");
}
return foundMessage;
}
开发者ID:thaddeusbort,项目名称:cantranslator,代码行数:24,代码来源:cantranslator.cpp
示例2: get_coin_info
char *SuperNET_JSON(char *JSONstr)
{
char *retstr = 0;
struct coin_info *cp = get_coin_info("BTCD");
cJSON *json;
if ( Finished_init == 0 )
return(0);
if ( Debuglevel > 1 )
printf("got JSON.(%s)\n",JSONstr);
if ( cp != 0 && (json= cJSON_Parse(JSONstr)) != 0 )
{
if ( 1 && is_BTCD_command(json) != 0 ) // deadlocks as the SuperNET API came from locked BTCD RPC
{
//if ( Debuglevel > 1 )
// printf("is_BTCD_command\n");
return(block_on_SuperNET(0,JSONstr));
}
else retstr = block_on_SuperNET(1,JSONstr);
free_json(json);
} else printf("couldnt parse (%s)\n",JSONstr);
if ( retstr == 0 )
retstr = clonestr("{\"result\":null}");
return(retstr);
}
开发者ID:apex944,项目名称:btcd,代码行数:24,代码来源:libjl777.c
示例3: dir_fopen_warn
cJSON *load_json( const char *filename )
{
#ifdef ENABLE_CONFIGURATION
FILE *f = dir_fopen_warn(get_user_directory(), filename, "rb");
if (f == NULL)
return NULL;
size_t buffer_len = ftell_eof(f);
char *buffer = malloc(buffer_len + 1);
fread(buffer, 1, buffer_len, f);
buffer[buffer_len] = '\0';
fclose(f);
cJSON *root = cJSON_Parse(buffer);
free(buffer);
return root;
#else
return NULL;
#endif /*ENABLE_CONFIGURATION*/
}
开发者ID:idispatch,项目名称:opentyrian,代码行数:24,代码来源:config.c
示例4: parse
void parse(direct ** dir)
{
FILE * file = fopen("director.json", "r");
char text[10000];
char line[100];
while(fgets(line, 100, file) != NULL)
{
strcat(text, line);
}
fclose(file);
cJSON * jList = cJSON_Parse(text);
if (!jList)
{
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return;
}
for (int i = 0; i < cJSON_GetArraySize(jList); i++)
{
cJSON * jItem = cJSON_GetArrayItem(jList, i);
char * name = cJSON_GetObjectItem(jItem, "name")->valuestring;
char * surname = cJSON_GetObjectItem(jItem, "surname")->valuestring;
char * birthdate = cJSON_GetObjectItem(jItem, "birthdate")->valuestring;
char * company = cJSON_GetObjectItem(jItem, "company")->valuestring;
char * name_com = cJSON_GetObjectItem(jItem, "name_com")->valuestring;
char * specialization = cJSON_GetObjectItem(jItem, "specialization")->valuestring;
int year = cJSON_GetObjectItem(jItem, "year")->valueint;
double rating = cJSON_GetObjectItem(jItem, "rating")->valuedouble;
Director_set(Director[i], name, surname, birthdate, company, name_com, specialization, year, rating);
}
cJSON_Delete(jList);
}
开发者ID:AlexandraPV,项目名称:Repository,代码行数:36,代码来源:parse.c
示例5: UpdatePersistentStorage
/**
* Function to update persistent storage
*/
static bool UpdatePersistentStorage(OicSecPstat_t * pstat)
{
bool bRet = false;
if (pstat)
{
// Convert pstat data into JSON for update to persistent storage
char *jsonStr = BinToPstatJSON(pstat);
if (jsonStr)
{
cJSON *jsonPstat = cJSON_Parse(jsonStr);
OICFree(jsonStr);
if (jsonPstat &&
(OC_STACK_OK == UpdateSVRDatabase(OIC_JSON_PSTAT_NAME, jsonPstat)))
{
bRet = true;
}
cJSON_Delete(jsonPstat);
}
}
return bRet;
}
开发者ID:aaronkim,项目名称:iotivity,代码行数:27,代码来源:pstatresource.c
示例6: append_stdfields
static void append_stdfields(char *retbuf,int32_t max,struct plugin_info *plugin,uint64_t tag,int32_t allfields)
{
char tagstr[512]; cJSON *json; int32_t len;
//printf("APPEND.(%s) (%s)\n",retbuf,plugin->name);
tagstr[0] = 0;
len = (int32_t)strlen(retbuf);
if ( len > 4 && retbuf[len-1] != ']' && (json= cJSON_Parse(retbuf)) != 0 )
{
if ( tag != 0 && get_API_nxt64bits(cJSON_GetObjectItem(json,"tag")) == 0 )
sprintf(tagstr,",\"tag\":\"%llu\"",(long long)tag);
if ( cJSON_GetObjectItem(json,"serviceNXT") == 0 && plugin->SERVICENXT[0] != 0 )
sprintf(tagstr+strlen(tagstr),",\"serviceNXT\":\"%s\"",plugin->SERVICENXT);
if ( cJSON_GetObjectItem(json,"NXT") == 0 )
sprintf(tagstr+strlen(tagstr),",\"NXT\":\"%s\"",plugin->NXTADDR);
if ( allfields != 0 )
{
//if ( SUPERNET.iamrelay != 0 )
// sprintf(retbuf+strlen(retbuf)-1,",\"myipaddr\":\"%s\"}",plugin->ipaddr);
sprintf(retbuf+strlen(retbuf)-1,",\"allowremote\":%d%s}",plugin->allowremote,tagstr);
sprintf(retbuf+strlen(retbuf)-1,",\"permanentflag\":%d,\"daemonid\":\"%llu\",\"myid\":\"%llu\",\"plugin\":\"%s\",\"endpoint\":\"%s\",\"millis\":%.2f,\"sent\":%u,\"recv\":%u}",plugin->permanentflag,(long long)plugin->daemonid,(long long)plugin->myid,plugin->name,plugin->bindaddr[0]!=0?plugin->bindaddr:plugin->connectaddr,milliseconds2(),plugin->numsent,plugin->numrecv);
}
else sprintf(retbuf+strlen(retbuf)-1,",\"daemonid\":\"%llu\",\"myid\":\"%llu\",\"allowremote\":%d%s}",(long long)plugin->daemonid,(long long)plugin->myid,plugin->allowremote,tagstr);
}
}
开发者ID:Bitcoinsulting,项目名称:libjl777,代码行数:24,代码来源:plugin777.c
示例7: qDebug
void SocketService::logipslots(const QString &vmid)
{
QString params = "&hostId="+ vmid;
std::string hostid = params.toLocal8Bit().data();
std::string hostmac = "&boxId=" + boxmac;
std::string hoststatus = "&status=" + vmstatus;
std::string httpinfo = httphead + "iChange";
std::string checkinfo = userpass + hostid + hostmac + hoststatus;
std::string strmsg = "";
qDebug()<<"checkinfo:"<<checkinfo.c_str();
http->Post(httpinfo, checkinfo, strmsg);
qDebug() << "logip:"<<strmsg.c_str();
cJSON *json = cJSON_Parse(strmsg.data());
if(json == NULL)
{
return;
}
cJSON *json_result = cJSON_GetObjectItem(json,"result");
if(json_result == NULL)
{
emit signals_httperror("JSON Pare error!");
return ;
}
QString result = json_result->valuestring;
if(result.compare("false") == 0)
{
cJSON *json_error = cJSON_GetObjectItem(json,"errorMsg");
emit signals_httperror(json_error->valuestring);
}
cJSON_Delete(json);
}
开发者ID:hwc56,项目名称:mysun1,代码行数:36,代码来源:socketservice.cpp
示例8: parse
size_t parse(char *ptr, size_t size, size_t nmemb, char *data)
{
if(size*nmemb <= 2)
{
return size*nmemb;
}
printf("%s\n", ptr); //DEBUG
cJSON *root = cJSON_Parse(ptr);
struct cJSON *current = root->child;
while(strcmp(current->string, "text") != 0)
{
if(current->next != NULL)
{
current = current->next;
} else {
break;
printf("done"); //DEBUG
}
}
if(strstr(current->valuestring, "START") != NULL)
{
bcm2835_gpio_write(PIN, HIGH);
} else if(strstr(current->valuestring, "OFF") != NULL)
{
bcm2835_gpio_write(PIN, LOW);
}
printf("Current object: %s\n", cJSON_Print(current)); //DEBUG
return size*nmemb;
}
开发者ID:SolderFodder,项目名称:startbrewing,代码行数:36,代码来源:startbrewing.c
示例9: jprint
char *PARSEBALANCE(struct exchange_info *exchange,double *balancep,char *coinstr)
{
char *itemstr = 0; cJSON *item,*obj; double onorders,btcvalue;
*balancep = 0.;
if ( exchange->balancejson != 0 && (item= jobj(exchange->balancejson,coinstr)) != 0 )
{
itemstr = jprint(item,0);
*balancep = jdouble(item,"available");
onorders = jdouble(item,"onOrders");
btcvalue = jdouble(item,"btcValue");
if ( (obj= cJSON_Parse(itemstr)) != 0 )
{
free(itemstr);
jaddstr(obj,"base",coinstr);
jaddnum(obj,"balance",*balancep);
jaddnum(obj,"onOrders",onorders);
jaddnum(obj,"btcvalue",btcvalue);
itemstr = jprint(obj,1);
}
}
if ( itemstr == 0 )
return(clonestr("{\"error\":\"cant find coin balance\"}"));
return(itemstr);
}
开发者ID:jl777,项目名称:SuperNET_API,代码行数:24,代码来源:poloniex.c
示例10: UpdatePersistentStorage
/**
* @todo document this function including why code might need to call this.
* The current suspicion is that it's not being called as much as it should.
*/
static bool UpdatePersistentStorage(OicSecDoxm_t * doxm)
{
bool bRet = false;
if (NULL != doxm)
{
// Convert Doxm data into JSON for update to persistent storage
char *jsonStr = BinToDoxmJSON(doxm);
if (jsonStr)
{
cJSON *jsonDoxm = cJSON_Parse(jsonStr);
OICFree(jsonStr);
if (jsonDoxm &&
(OC_STACK_OK == UpdateSVRDatabase(OIC_JSON_DOXM_NAME, jsonDoxm)))
{
bRet = true;
}
cJSON_Delete(jsonDoxm);
}
}
return bRet;
}
开发者ID:aaronkim,项目名称:iotivity,代码行数:28,代码来源:doxmresource.c
示例11: platform_load
int platform_load(int type, const char *proto)
{
assert(proto);
std::fstream fs(proto, std::ios::in | std::ios::binary);
if (!fs) {
LOG_ERROR("json",
"Can NOT open file %s.", proto);
return -1;
}
std::stringstream iss;
iss << fs.rdbuf();
cJSON *json = cJSON_Parse(iss.str().c_str());
if (json == NULL) {
LOG_ERROR("json",
"Can NOT parse json file %s.", proto);
return -1;
}
s_jsons.insert(std::make_pair<int, cJSON*>(type, json));
return 0;
}
开发者ID:youngtrips,项目名称:elfox,代码行数:24,代码来源:platform.cpp
示例12: exchange_nonce
cJSON *SIGNPOST(char **retstrp,struct exchange_info *exchange,char *payload,char *path)
{
static CURL *cHandle;
char url[1024],req[1024],md5secret[128],tmp[1024],dest[1025],hdr1[512],hdr2[512],hdr3[512],hdr4[512],*sig,*data = 0;
cJSON *json; uint64_t nonce;
hdr1[0] = hdr2[0] = hdr3[0] = hdr4[0] = 0;
json = 0;
nonce = exchange_nonce(exchange) * 1000 + ((uint64_t)milliseconds() % 1000);
sprintf(tmp,"%llu%s%s",(long long)nonce,exchange->userid,exchange->apikey);
calc_md5(md5secret,exchange->apisecret,(int32_t)strlen(exchange->apisecret));
if ( (sig= hmac_sha256_str(dest,md5secret,(int32_t)strlen(md5secret),tmp)) != 0 )
{
sprintf(req,"{\"key\":\"%s\",%s\"nonce\":%llu,\"signature\":\"%s\"}",exchange->apikey,payload,(long long)nonce,sig);
sprintf(hdr1,"Content-Type:application/json"), sprintf(hdr2,"charset=utf-8"), sprintf(hdr3,"Content-Length:%ld",(long)strlen(req));
sprintf(url,"https://api.quadrigacx.com/v2/%s",path);
if ( (data= curl_post(&cHandle,url,0,req,hdr1,hdr2,hdr3,hdr4)) != 0 )
json = cJSON_Parse(data);
}
if ( retstrp != 0 )
*retstrp = data;
else if ( data != 0 )
free(data);
return(json);
}
开发者ID:jonesnxt,项目名称:SuperNET_API,代码行数:24,代码来源:quadriga.c
示例13: do_get_list
cJSON* do_get_list()
{
wchar header[128];
const wchar_t* arr[1];
arr[0] = header;
wchar url[128];
char buf[128];
cl::StringUtil::format(buf, 128, "Authorization: %s\r\n", g_token);
cl::StringUtil::char_to_wchar(header, 128, buf);
cl::StringUtil::format(buf, 128, "http://%s/v2/instances", g_host);
cl::StringUtil::char_to_wchar(url, 128, buf);
char* response;
int len;
unsigned long code;
int ret = urlRequest(url, L"GET", arr, 1, NULL, 0, &code, &response, &len);
if(ret)
{
if(code == 200)
{
cJSON* root = cJSON_Parse(response);
cl_free(response);
return root;
}
else
{
cl_free(response);
return NULL;
}
}
return NULL;
}
开发者ID:ChinaCCF,项目名称:Fortunes,代码行数:36,代码来源:Model.cpp
示例14: ConvertJsonToCBOR
static void ConvertJsonToCBOR(const char *jsonFileName, const char *cborFileName)
{
char *jsonStr = NULL;
FILE *fp = NULL;
FILE *fp1 = NULL;
uint8_t *aclCbor = NULL;
uint8_t *pstatCbor = NULL;
uint8_t *doxmCbor = NULL;
uint8_t *amaclCbor = NULL;
uint8_t *svcCbor = NULL;
uint8_t *credCbor = NULL;
cJSON *jsonRoot = NULL;
OCStackResult ret = OC_STACK_ERROR;
size_t size = GetJSONFileSize(jsonFileName);
if (0 == size)
{
OIC_LOG (ERROR, TAG, "Failed converting to JSON");
return;
}
jsonStr = (char *)OICMalloc(size + 1);
VERIFY_NON_NULL(TAG, jsonStr, FATAL);
fp = fopen(jsonFileName, "r");
if (fp)
{
size_t bytesRead = fread(jsonStr, 1, size, fp);
jsonStr[bytesRead] = '\0';
OIC_LOG_V(DEBUG, TAG, "Read %zu bytes", bytesRead);
fclose(fp);
fp = NULL;
}
else
{
OIC_LOG (ERROR, TAG, "Unable to open JSON file!!");
goto exit;
}
jsonRoot = cJSON_Parse(jsonStr);
cJSON *value = cJSON_GetObjectItem(jsonRoot, OIC_JSON_ACL_NAME);
//printf("ACL json : \n%s\n", cJSON_PrintUnformatted(value));
size_t aclCborSize = 0;
if (NULL != value)
{
OicSecAcl_t *acl = JSONToAclBin(jsonStr);
VERIFY_NON_NULL(TAG, acl, FATAL);
ret = AclToCBORPayload(acl, &aclCbor, &aclCborSize);
if(OC_STACK_OK != ret)
{
OIC_LOG (ERROR, TAG, "Failed converting Acl to Cbor Payload");
DeleteACLList(acl);
goto exit;
}
printf("ACL Cbor Size: %zd\n", aclCborSize);
DeleteACLList(acl);
}
value = cJSON_GetObjectItem(jsonRoot, OIC_JSON_PSTAT_NAME);
size_t pstatCborSize = 0;
if (NULL != value)
{
OicSecPstat_t *pstat = JSONToPstatBin(jsonStr);
VERIFY_NON_NULL(TAG, pstat, FATAL);
ret = PstatToCBORPayload(pstat, &pstatCbor, &pstatCborSize);
if(OC_STACK_OK != ret)
{
OIC_LOG (ERROR, TAG, "Failed converting Pstat to Cbor Payload");
DeletePstatBinData(pstat);
goto exit;
}
printf("PSTAT Cbor Size: %zd\n", pstatCborSize);
DeletePstatBinData(pstat);
}
value = cJSON_GetObjectItem(jsonRoot, OIC_JSON_DOXM_NAME);
size_t doxmCborSize = 0;
if (NULL != value)
{
OicSecDoxm_t *doxm = JSONToDoxmBin(jsonStr);
VERIFY_NON_NULL(TAG, doxm, FATAL);
ret = DoxmToCBORPayload(doxm, &doxmCbor, &doxmCborSize);
if(OC_STACK_OK != ret)
{
OIC_LOG (ERROR, TAG, "Failed converting Doxm to Cbor Payload");
DeleteDoxmBinData(doxm);
goto exit;
}
printf("DOXM Cbor Size: %zd\n", doxmCborSize);
DeleteDoxmBinData(doxm);
}
value = cJSON_GetObjectItem(jsonRoot, OIC_JSON_AMACL_NAME);
size_t amaclCborSize = 0;
if (NULL != value)
{
OicSecAmacl_t *amacl = JSONToAmaclBin(jsonStr);
VERIFY_NON_NULL(TAG, amacl, FATAL);
ret = AmaclToCBORPayload(amacl, &amaclCbor, &amaclCborSize);
if(OC_STACK_OK != ret)
{
//.........这里部分代码省略.........
开发者ID:Subh1994,项目名称:iotivity,代码行数:101,代码来源:json2cbor.c
示例15: JSONToCredBin
OicSecCred_t * JSONToCredBin(const char * jsonStr)
{
if (NULL == jsonStr)
{
OIC_LOG(ERROR, TAG,"JSONToCredBin jsonStr in NULL");
return NULL;
}
OicSecCred_t *headCred = (OicSecCred_t*)OICCalloc(1, sizeof(OicSecCred_t));
OCStackResult ret = OC_STACK_ERROR;
cJSON *jsonRoot = NULL;
VERIFY_NON_NULL(TAG, headCred, ERROR);
jsonRoot = cJSON_Parse(jsonStr);
VERIFY_NON_NULL(TAG, jsonRoot, ERROR);
cJSON *jsonCredMap = cJSON_GetObjectItem(jsonRoot, OIC_JSON_CRED_NAME);
VERIFY_NON_NULL(TAG, jsonCredMap, ERROR);
// creds
cJSON *jsonCredArray = NULL;
jsonCredArray = cJSON_GetObjectItem(jsonCredMap, OIC_JSON_CREDS_NAME);
VERIFY_NON_NULL(TAG, jsonCredArray, ERROR);
if (cJSON_Array == jsonCredArray->type)
{
int numCred = cJSON_GetArraySize(jsonCredArray);
VERIFY_SUCCESS(TAG, numCred > 0, ERROR);
int idx = 0;
do
{
cJSON *jsonCred = cJSON_GetArrayItem(jsonCredArray, idx);
VERIFY_NON_NULL(TAG, jsonCred, ERROR);
OicSecCred_t *cred = NULL;
if(idx == 0)
{
cred = headCred;
}
else
{
cred = (OicSecCred_t*)OICCalloc(1, sizeof(OicSecCred_t));
OicSecCred_t *temp = headCred;
while (temp->next)
{
temp = temp->next;
}
temp->next = cred;
}
VERIFY_NON_NULL(TAG, cred, ERROR);
size_t jsonObjLen = 0;
cJSON *jsonObj = NULL;
//CredId -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonCred, OIC_JSON_CREDID_NAME);
if(jsonObj)
{
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
cred->credId = jsonObj->valueint;
}
//subject -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonCred, OIC_JSON_SUBJECTID_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_String == jsonObj->type, ERROR);
ret = ConvertStrToUuid(jsonObj->valuestring, &cred->subject);
VERIFY_SUCCESS(TAG, OC_STACK_OK == ret, ERROR);
//CredType -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonCred, OIC_JSON_CREDTYPE_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
cred->credType = (OicSecCredType_t)jsonObj->valueint;
//PrivateData is mandatory for some of the credential types listed below.
jsonObj = cJSON_GetObjectItem(jsonCred, OIC_JSON_PRIVATEDATA_NAME);
if (NULL != jsonObj)
{
cJSON *jsonPriv = cJSON_GetObjectItem(jsonObj, OIC_JSON_DATA_NAME);
VERIFY_NON_NULL(TAG, jsonPriv, ERROR);
jsonObjLen = strlen(jsonPriv->valuestring);
cred->privateData.data = (uint8_t *)OICCalloc(1, jsonObjLen);
VERIFY_NON_NULL(TAG, (cred->privateData.data), ERROR);
memcpy(cred->privateData.data, jsonPriv->valuestring, jsonObjLen);
cred->privateData.len = jsonObjLen;
cJSON *jsonEncoding = cJSON_GetObjectItem(jsonObj, OIC_JSON_ENCODING_NAME);
VERIFY_NON_NULL(TAG, jsonEncoding, ERROR);
if(strcmp(OIC_SEC_ENCODING_RAW, jsonEncoding->valuestring) == 0)
{
cred->privateData.encoding = OIC_ENCODING_RAW;
}
else if(strcmp(OIC_SEC_ENCODING_BASE64, jsonEncoding->valuestring) == 0)
{
cred->privateData.encoding = OIC_ENCODING_BASE64;
}
else
{
//.........这里部分代码省略.........
开发者ID:Subh1994,项目名称:iotivity,代码行数:101,代码来源:json2cbor.c
示例16: JSONToPstatBin
OicSecPstat_t* JSONToPstatBin(const char * jsonStr)
{
printf("IN JSONToPstatBin\n");
if(NULL == jsonStr)
{
return NULL;
}
OCStackResult ret = OC_STACK_ERROR;
OicSecPstat_t *pstat = NULL;
cJSON *jsonPstat = NULL;
cJSON *jsonObj = NULL;
cJSON *jsonRoot = cJSON_Parse(jsonStr);
VERIFY_NON_NULL(TAG, jsonRoot, INFO);
jsonPstat = cJSON_GetObjectItem(jsonRoot, OIC_JSON_PSTAT_NAME);
VERIFY_NON_NULL(TAG, jsonPstat, INFO);
pstat = (OicSecPstat_t*)OICCalloc(1, sizeof(OicSecPstat_t));
VERIFY_NON_NULL(TAG, pstat, INFO);
jsonObj = cJSON_GetObjectItem(jsonPstat, OIC_JSON_ISOP_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, (cJSON_True == jsonObj->type || cJSON_False == jsonObj->type) , ERROR);
pstat->isOp = jsonObj->valueint;
jsonObj = cJSON_GetObjectItem(jsonPstat, OIC_JSON_DEVICE_ID_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_String == jsonObj->type, ERROR);
ret = ConvertStrToUuid(jsonObj->valuestring, &pstat->deviceID);
VERIFY_SUCCESS(TAG, OC_STACK_OK == ret, ERROR);
jsonObj = cJSON_GetObjectItem(jsonPstat, OIC_JSON_ROWNERID_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_String == jsonObj->type, ERROR);
ret = ConvertStrToUuid(jsonObj->valuestring, &pstat->rownerID);
VERIFY_SUCCESS(TAG, OC_STACK_OK == ret, ERROR);
jsonObj = cJSON_GetObjectItem(jsonPstat, OIC_JSON_CM_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
pstat->cm = (OicSecDpm_t)jsonObj->valueint;
jsonObj = cJSON_GetObjectItem(jsonPstat, OIC_JSON_TM_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
pstat->tm = (OicSecDpm_t)jsonObj->valueint;
jsonObj = cJSON_GetObjectItem(jsonPstat, OIC_JSON_OM_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
pstat->om = (OicSecDpom_t)jsonObj->valueint;
jsonObj = cJSON_GetObjectItem(jsonPstat, OIC_JSON_SM_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
pstat->smLen = 1;
pstat->sm = (OicSecDpom_t*)OICCalloc(pstat->smLen, sizeof(OicSecDpom_t));
pstat->sm[0] = (OicSecDpom_t)jsonObj->valueint;
ret = OC_STACK_OK;
exit:
cJSON_Delete(jsonRoot);
if (OC_STACK_OK != ret)
{
OIC_LOG(ERROR, TAG, "JSONToPstatBin failed");
}
printf("OUT JSONToPstatBin\n");
return pstat;
}
开发者ID:Subh1994,项目名称:iotivity,代码行数:71,代码来源:json2cbor.c
示例17: JSONToDoxmBin
OicSecDoxm_t* JSONToDoxmBin(const char * jsonStr)
{
printf("IN JSONToDoxmBin\n");
if (NULL == jsonStr)
{
return NULL;
}
OCStackResult ret = OC_STACK_ERROR;
OicSecDoxm_t *doxm = NULL;
cJSON *jsonDoxm = NULL;
cJSON *jsonObj = NULL;
size_t jsonObjLen = 0;
cJSON *jsonRoot = cJSON_Parse(jsonStr);
VERIFY_NON_NULL(TAG, jsonRoot, ERROR);
jsonDoxm = cJSON_GetObjectItem(jsonRoot, OIC_JSON_DOXM_NAME);
VERIFY_NON_NULL(TAG, jsonDoxm, ERROR);
doxm = (OicSecDoxm_t *)OICCalloc(1, sizeof(OicSecDoxm_t));
VERIFY_NON_NULL(TAG, doxm, ERROR);
//OxmType -- not Mandatory
jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_OXM_TYPE_NAME);
if ((jsonObj) && (cJSON_Array == jsonObj->type))
{
doxm->oxmTypeLen = (size_t)cJSON_GetArraySize(jsonObj);
VERIFY_SUCCESS(TAG, doxm->oxmTypeLen > 0, ERROR);
doxm->oxmType = (OicUrn_t *)OICCalloc(doxm->oxmTypeLen, sizeof(char *));
VERIFY_NON_NULL(TAG, (doxm->oxmType), ERROR);
for (size_t i = 0; i < doxm->oxmTypeLen ; i++)
{
cJSON *jsonOxmTy = cJSON_GetArrayItem(jsonObj, i);
VERIFY_NON_NULL(TAG, jsonOxmTy, ERROR);
jsonObjLen = strlen(jsonOxmTy->valuestring) + 1;
doxm->oxmType[i] = (char*)OICMalloc(jsonObjLen);
VERIFY_NON_NULL(TAG, doxm->oxmType[i], ERROR);
strncpy((char *)doxm->oxmType[i], (char *)jsonOxmTy->valuestring, jsonObjLen);
}
}
//Oxm -- not Mandatory
jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_OXMS_NAME);
if (jsonObj && cJSON_Array == jsonObj->type)
{
doxm->oxmLen = (size_t)cJSON_GetArraySize(jsonObj);
VERIFY_SUCCESS(TAG, doxm->oxmLen > 0, ERROR);
doxm->oxm = (OicSecOxm_t*)OICCalloc(doxm->oxmLen, sizeof(OicSecOxm_t));
VERIFY_NON_NULL(TAG, doxm->oxm, ERROR);
for (size_t i = 0; i < doxm->oxmLen ; i++)
{
cJSON *jsonOxm = cJSON_GetArrayItem(jsonObj, i);
VERIFY_NON_NULL(TAG, jsonOxm, ERROR);
doxm->oxm[i] = (OicSecOxm_t)jsonOxm->valueint;
}
}
//OxmSel -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_OXM_SEL_NAME);
if (jsonObj)
{
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
doxm->oxmSel = (OicSecOxm_t)jsonObj->valueint;
}
//sct -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_SUPPORTED_CRED_TYPE_NAME);
if (jsonObj)
{
VERIFY_SUCCESS(TAG, cJSON_Number == jsonObj->type, ERROR);
doxm->sct = (OicSecCredType_t)jsonObj->valueint;
}
//Owned -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_OWNED_NAME);
if (jsonObj)
{
VERIFY_SUCCESS(TAG, (cJSON_True == jsonObj->type || cJSON_False == jsonObj->type), ERROR);
doxm->owned = jsonObj->valueint;
}
//DPC -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_DPC_NAME);
if (jsonObj)
{
VERIFY_SUCCESS(TAG, (cJSON_True == jsonObj->type || cJSON_False == jsonObj->type), ERROR);
doxm->dpc = jsonObj->valueint;
}
//DeviceId -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonDoxm, OIC_JSON_DEVICE_ID_NAME);
if (jsonObj)
{
//.........这里部分代码省略.........
开发者ID:Subh1994,项目名称:iotivity,代码行数:101,代码来源:json2cbor.c
示例18: JSONToAclBin
OicSecAcl_t* JSONToAclBin(const char * jsonStr)
{
OCStackResult ret = OC_STACK_ERROR;
OicSecAcl_t * headAcl = (OicSecAcl_t*)OICCalloc(1, sizeof(OicSecAcl_t));
cJSON *jsonRoot = NULL;
VERIFY_NON_NULL(TAG, jsonStr, ERROR);
jsonRoot = cJSON_Parse(jsonStr);
VERIFY_NON_NULL(TAG, jsonRoot, ERROR);
cJSON *jsonAclMap = cJSON_GetObjectItem(jsonRoot, OIC_JSON_ACL_NAME);
VERIFY_NON_NULL(TAG, jsonAclMap, ERROR);
cJSON *jsonAclObj = NULL;
// aclist
jsonAclObj = cJSON_GetObjectItem(jsonAclMap, OIC_JSON_ACLIST_NAME);
VERIFY_NON_NULL(TAG, jsonAclObj, ERROR);
// aclist-aces
cJSON *jsonAclArray = NULL;
jsonAclArray = cJSON_GetObjectItem(jsonAclObj, OIC_JSON_ACES_NAME);
VERIFY_NON_NULL(TAG, jsonAclArray, ERROR);
if (cJSON_Array == jsonAclArray->type)
{
int numAcl = cJSON_GetArraySize(jsonAclArray);
int idx = 0;
VERIFY_SUCCESS(TAG, numAcl > 0, INFO);
do
{
cJSON *jsonAcl = cJSON_GetArrayItem(jsonAclArray, idx);
VERIFY_NON_NULL(TAG, jsonAcl, ERROR);
OicSecAce_t *ace = (OicSecAce_t*)OICCalloc(1, sizeof(OicSecAce_t));
VERIFY_NON_NULL(TAG, ace, ERROR);
LL_APPEND(headAcl->aces, ace);
size_t jsonObjLen = 0;
cJSON *jsonObj = NULL;
jsonObj = cJSON_GetObjectItem(jsonAcl, OIC_JSON_SUBJECTID_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_String == jsonObj->type, ERROR);
if(strcmp(jsonObj->valuestring, WILDCARD_RESOURCE_URI) == 0)
{
ace->subjectuuid.id[0] = '*';
}
else
{
ret = ConvertStrToUuid(jsonObj->valuestring, &ace->subjectuuid);
VERIFY_SUCCESS(TAG, OC_STACK_OK == ret, ERROR);
}
// Resources -- Mandatory
jsonObj = cJSON_GetObjectItem(jsonAcl, OIC_JSON_RESOURCES_NAME);
VERIFY_NON_NULL(TAG, jsonObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_Array == jsonObj->type, ERROR);
size_t resourcesLen = (size_t)cJSON_GetArraySize(jsonObj);
VERIFY_SUCCESS(TAG, resourcesLen > 0, ERROR);
for(size_t idxx = 0; idxx < resourcesLen; idxx++)
{
OicSecRsrc_t* rsrc = (OicSecRsrc_t*)OICCalloc(1, sizeof(OicSecRsrc_t));
VERIFY_NON_NULL(TAG, rsrc, ERROR);
cJSON *jsonRsrc = cJSON_GetArrayItem(jsonObj, idxx);
VERIFY_NON_NULL(TAG, jsonRsrc, ERROR);
//href
size_t jsonRsrcObjLen = 0;
cJSON *jsonRsrcObj = cJSON_GetObjectItem(jsonRsrc, OIC_JSON_HREF_NAME);
VERIFY_NON_NULL(TAG, jsonRsrcObj, ERROR);
VERIFY_SUCCESS(TAG, cJSON_String == jsonRsrcObj->type, ERROR);
jsonRsrcObjLen = strlen(jsonRsrcObj->valuestring) + 1;
rsrc->href = (char*)OICMalloc(jsonRsrcObjLen);
VERIFY_NON_NULL(TAG, (rsrc->href), ERROR);
OICStrcpy(rsrc->href, jsonRsrcObjLen, jsonRsrcObj->valuestring);
//rel
jsonRsrcObj = cJSON_GetObjectItem(jsonRsrc, OIC_JSON_REL_NAME);
if(jsonRsrcObj)
{
jsonRsrcObjLen = strlen(jsonRsrcObj->valuestring) + 1;
rsrc->rel = (char*)OICMalloc(jsonRsrcObjLen);
VERIFY_NON_NULL(TAG, (rsrc->rel), ERROR);
OICStrcpy(rsrc->rel, jsonRsrcObjLen, jsonRsrcObj->valuestring);
}
//rt
jsonRsrcObj = cJSON_GetObjectItem(jsonRsrc, OIC_JSON_RT_NAME);
if(jsonRsrcObj && cJSON_Array == jsonRsrcObj->type)
{
rsrc->typeLen = (size_t)cJSON_GetArraySize(jsonRsrcObj);
VERIFY_SUCCESS(TAG, (0 < rsrc->typeLen), ERROR);
rsrc->types = (char**)OICCalloc(rsrc->typeLen, sizeof(char*));
VERIFY_NON_NULL(TAG, (rsrc->types), ERROR);
//.........这里部分代码省略.........
开发者ID:Subh1994,项目名称:iotivity,代码行数:101,代码来源:json2cbor.c
示例19: lcbvb_load_json
int
lcbvb_load_json(lcbvb_CONFIG *cfg, const char *data)
{
cJSON *cj = NULL, *jnodes = NULL;
char *tmp = NULL;
unsigned ii;
if ((cj = cJSON_Parse(data)) == NULL) {
SET_ERRSTR(cfg, "Couldn't parse JSON");
goto GT_ERROR;
}
if (!get_jstr(cj, "name", &tmp)) {
SET_ERRSTR(cfg, "Expected 'name' key");
goto GT_ERROR;
}
cfg->bname = strdup(tmp);
if (!get_jstr(cj, "nodeLocator", &tmp)) {
SET_ERRSTR(cfg, "Expected 'nodeLocator' key");
goto GT_ERROR;
}
if (get_jarray(cj, "nodesExt", &jnodes)) {
cfg->is3x = 1;
} else if (!get_jarray(cj, "nodes", &jnodes)) {
SET_ERRSTR(cfg, "expected 'nodesExt' or 'nodes' array");
goto GT_ERROR;
}
if (!strcmp(tmp, "ketama")) {
cfg->dtype = LCBVB_DIST_KETAMA;
} else {
cfg->dtype = LCBVB_DIST_VBUCKET;
}
if (get_jstr(cj, "uuid", &tmp)) {
cfg->buuid = strdup(tmp);
}
if (!get_jint(cj, "rev", &cfg->revid)) {
cfg->revid = -1;
}
/** Get the number of nodes. This traverses the list. Yuck */
cfg->nsrv = cJSON_GetArraySize(jnodes);
/** Allocate a temporary one on the heap */
cfg->servers = calloc(cfg->nsrv, sizeof(*cfg->servers));
for (ii = 0; ii < cfg->nsrv; ii++) {
int rv;
cJSON *jsrv = cJSON_GetArrayItem(jnodes, ii);
if (cfg->is3x) {
rv = build_server_3x(cfg, cfg->servers + ii, jsrv);
} else {
rv = build_server_2x(cfg, cfg->servers + ii, jsrv);
}
if (!rv) {
SET_ERRSTR(cfg, "Failed to build server");
goto GT_ERROR;
}
}
/* Count the number of _data_ servers in the cluster. Per the spec,
* these will always appear in order (so that we won't ever have "holes") */
for (ii = 0; ii < cfg->nsrv; ii++) {
if (!cfg->servers[ii].svc.data) {
break;
}
}
cfg->ndatasrv = ii;
if (cfg->dtype == LCBVB_DIST_VBUCKET) {
if (!parse_vbucket(cfg, cj)) {
SET_ERRSTR(cfg, "Failed to parse vBucket map");
goto GT_ERROR;
}
} else {
/* If there is no $HOST then we can update the ketama config, otherwise
* we must wait for the hostname to be replaced! */
if (strstr(data, "$HOST") == NULL) {
if (!update_ketama(cfg)) {
SET_ERRSTR(cfg, "Failed to establish ketama continuums");
}
}
}
cfg->servers = realloc(cfg->servers, sizeof(*cfg->servers) * cfg->nsrv);
cfg->randbuf = malloc(cfg->nsrv * sizeof(*cfg->randbuf));
cJSON_Delete(cj);
return 0;
GT_ERROR:
if (cj) {
cJSON_Delete(cj);
}
return -1;
}
开发者ID:AntonBazhal,项目名称:couchnode,代码行数:99,代码来源:vbucket.c
示例20: return
cJSON *BALANCES(struct exchange_info *exchange,cJSON *argjson)
{
return(cJSON_Parse("{\"error\":\"yahoo is readonly data source\"}"));
}
开发者ID:ceda018,项目名称:SuperNET,代码行数:4,代码来源:yahoo.c
注:本文中的cJSON_Parse函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论