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

c 后臺如何解析json

劉柏宏2年前10瀏覽0評論

c語言的后臺在解析json時(shí),需要用到一些第三方庫或者自己編寫的解析函數(shù)。下面介紹一些比較常見的解析方法。

/* cJSON解析json */
cJSON *root = cJSON_Parse(json_string);
if (!root) {
printf("Error before: %s\n", cJSON_GetErrorPtr());
}
...
/* jsmn解析json */
jsmn_parser parser;
jsmntok_t tokens[MAX_TOKENS];
/* 初始化json解析器 */
jsmn_init(&parser);
/* 解析json并返回token個(gè)數(shù) */
int token_count = jsmn_parse(&parser, json_string, strlen(json_string), tokens, MAX_TOKENS);
/* 遍歷tokens并獲取對應(yīng)的值 */
for (int i = 0; i< token_count; i++) {
jsmntok_t *t = &tokens[i];
if (t->type == JSMN_OBJECT) {
...
} else if (t->type == JSMN_ARRAY) {
...
} else if (t->type == JSMN_STRING) {
...
} else if (t->type == JSMN_PRIMITIVE) {
...
}
}
/* RapidJSON解析json */
rapidjson::Document document;
document.Parse(json_string);
if (document.HasParseError()) {
printf("JSON parse error: %s\n", document.GetParseError());
}
/* 獲取json中對應(yīng)的值 */
if (document.IsObject() && document.HasMember("name")) {
const rapidjson::Value& name_value = document["name"];
if (name_value.IsString()) {
std::string name = name_value.GetString();
printf("name: %s\n", name.c_str());
}
}

有了上面的解析方法,我們就可以在c語言的后臺中輕松解析json并獲取其對應(yīng)的值了。