欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 解析數(shù)組json

榮姿康1年前8瀏覽0評論

JSON(JavaScript Object Notation)是一種輕量級數(shù)據(jù)交換格式,廣泛用于前端開發(fā)中許多API的數(shù)據(jù)交互。C語言作為一種底層語言,同樣需要解析JSON數(shù)據(jù)。本文將介紹如何使用C語言解析JSON數(shù)組。

首先,我們需要先了解JSON數(shù)組的結(jié)構(gòu)。JSON數(shù)組由一對中括號“[]”包裹,其中每個(gè)元素用逗號隔開。元素可以是其他的JSON數(shù)據(jù)類型,例如:字符串,數(shù)值等。例如下面的JSON數(shù)組:

[
"apple",
"banana",
"orange"
]

我們使用C語言中的 jsmn 庫來解析JSON數(shù)組。jsmn 是一個(gè)輕量級的JSON解析器,適用于嵌入式設(shè)備中。

使用 jsmn 庫需要先下載并安裝該庫,然后在代碼中包含 jsmn.h 和 jsmn.c 文件。以下是解析上文的JSON數(shù)組代碼:

#include <stdio.h>
#include <string.h>
#include <jsmn.h>
int main() {
// JSON string
char *json_string = "[\"apple\",\"banana\",\"orange\"]";
// Create jsmn parser and initialize
jsmn_parser parser;
jsmn_init(&parser);
// Get token count
int r;
size_t tokens_size = 10;
jsmntok_t *tokens = (jsmntok_t*)malloc(sizeof(jsmntok_t) * tokens_size);
while ((r = jsmn_parse(&parser, json_string, strlen(json_string), tokens, tokens_size)) == JSMN_ERROR_NOMEM) {
// Token count is not enough.
tokens_size *= 2;
tokens = (jsmntok_t*)realloc(tokens, sizeof(jsmntok_t) * tokens_size);
}
// Check error
if (r == JSMN_ERROR_INVAL) {
printf("JSON string is invalid\n");
return 1;
}
// Check if root is an array
if (tokens[0].type != JSMN_ARRAY) {
printf("Root element is not an array\n");
return 1;
}
// Loop through each element of array
for (int i = 1; i < tokens_count; i++) {
if (tokens[i].type == JSMN_STRING) {
printf("%.*s\n", tokens[i].end - tokens[i].start, json_string + tokens[i].start); // print string
}
}
return 0;
}

運(yùn)行上述代碼,輸出結(jié)果為:

apple
banana
orange

代碼解釋: 我們首先讀取JSON字符串,并初始化jsmn解析器。然后計(jì)算元素的數(shù)量,并檢查根元素是否為數(shù)組類型。最后,我們遍歷數(shù)組并打印出每個(gè)元素。

在真實(shí)應(yīng)用中,我們可能需要解析更復(fù)雜的JSON數(shù)據(jù)結(jié)構(gòu),例如 JSON 對象。jsmn 庫提供了更多的API,使解析更加容易,只需簡單的修改上述代碼即可。