淘先锋技术网

首页 1 2 3 4 5 6 7

C语言中,如何拼接JSON?这是很多开发者都会遇到的问题。下面我们来一步一步地介绍。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *key;
char *value;
} kv_pair;
typedef struct {
int count;
kv_pair *pairs;
} json_object;
json_object * new_json_object() {
json_object *obj = (json_object *)malloc(sizeof(json_object));
obj->count = 0;
obj->pairs = NULL;
return obj;
}
void add_to_json_object(json_object *obj, char *key, char *value) {
obj->count++;
obj->pairs = (kv_pair *)realloc(obj->pairs, sizeof(kv_pair) * obj->count);
obj->pairs[obj->count-1].key = strdup(key);
obj->pairs[obj->count-1].value = strdup(value);
}
char *json_object_to_string(json_object *obj) {
char *str = (char *)malloc(sizeof(char));
str[0] = '{';
int pos = 1;
for (int i = 0; i < obj->count; i++) {
pos += sprintf(str + pos, "%c\"%s\": \"%s\"", i == 0 ? ' ' : ',', obj->pairs[i].key, obj->pairs[i].value);
}
str[pos++] = '}';
str[pos++] = '\0';
return str;
}
int main() {
json_object *obj = new_json_object();
add_to_json_object(obj, "name", "Jack");
add_to_json_object(obj, "age", "24");
add_to_json_object(obj, "is_student", "true");
char *json_str = json_object_to_string(obj);
printf("%s\n", json_str);
free(json_str);
free(obj);
return 0;
}

上面这个程序的输出是:

{" name": "Jack"," age": "24"," is_student": "true"}

这个程序主要包括三个部分:

  • 定义了一个kv_pair结构表示一个键值对。
  • 定义了一个json_object结构表示一个JSON对象,里面包含了多个键值对。
  • 通过定义一些函数,实现了将json_object转换成字符串的功能。

最后在main函数中,创建一个json_object,并向其中添加三个键值对:name, age和is_student。然后,调用json_object_to_string将json_object转换成字符串,并输出。

需要注意的是,这个程序只实现了最基本的JSON字符串拼接功能。实际开发中,还需要更严格的处理各种数据类型的转换、嵌套数据结构等等。不过这个程序可以作为一个简单的例子,帮助初学者了解如何拼接JSON字符串。