色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c redis存取json

錢淋西1年前10瀏覽0評論

Redis作為一種基于內存的高性能鍵值存儲,常常被用來存儲JSON數據。在C語言中,我們可以使用hiredis庫來操作Redis。下面我們來看看如何在C中存取JSON數據。

首先,我們需要使用hiredis連接Redis。

redisContext* c = redisConnect("localhost", 6379);
if (c == NULL || c->err) {
//連接Redis失敗
return;
}

接下來,我們可以使用Redis的SET命令來存儲JSON數據。

//構造JSON對象
json_t* json = json_object();
json_object_set_new(json, "name", json_string("Tom"));
json_object_set_new(json, "age", json_integer(20));
//將JSON對象轉換為字符串
char* json_str = json_dumps(json, JSON_COMPACT);
//將JSON字符串存儲到Redis中
redisReply* reply = redisCommand(c, "SET %s %s", "person", json_str);
//釋放動態分配的內存
free(json_str);
json_decref(json);
if (reply == NULL) {
//存儲失敗
return;
}
freeReplyObject(reply);

使用GET命令可以獲取JSON數據。

redisReply* reply = redisCommand(c, "GET %s", "person");
if (reply == NULL || reply->type != REDIS_REPLY_STRING) {
//獲取失敗
return;
}
//將JSON字符串轉換為JSON對象
json_error_t error;
json_t* json = json_loads(reply->str, 0, &error);
if (json == NULL) {
//轉換失敗
return;
}
//獲取對象中的屬性
char* name;
json_integer_t age;
if (json_unpack(json, "{s:s,s:I}", "name", &name, "age", &age) == -1) {
//解析失敗
return;
}
//使用獲取到的屬性
printf("name: %s\n", name);
printf("age: %d\n", age);
//釋放動態分配的內存
free(name);
json_decref(json);
freeReplyObject(reply);

以上代碼演示了如何在C語言中存取JSON數據。當然,實際應用中需要注意異常處理和內存管理等問題。