微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

json字符串c转换成字符串数组

在日常开发中,我们常常会遇到需要将JSON字符串转换成字符串数组的情况,本文将介绍如何使用C语言来完成这个任务。

json字符串c转换成字符串数组

首先,在C语言中,我们需要使用JSON库来处理JSON字符串。这里我们选择使用cJSON库,它是一个轻量级的、跨平台的C语言JSON解析器。

接下来,我们需要定义一个字符串数组来存储JSON字符串中的数据。我们可以使用cJSON库中提供的cJSON_Parse函数来将JSON字符串解析成一个cJSON结构体,然后通过遍历结构体来获取需要的值并存储到字符串数组中。

#include "cJSON.h"
#include <stdio.h>
#include <stdlib.h>

int main() {
    char *json_str = "{\"names\": [\"Tom\",\"Jerry\",\"Bob\"]}";
    cJSON *root = cJSON_Parse(json_str);

    // 获取names数组
    cJSON *names = cJSON_GetobjectItem(root,"names");
    
    // 获取数组长度
    int names_len = cJSON_GetArraySize(names);
    
    // 定义字符串数组
    char **name_arr = malloc(names_len * sizeof(char*));
    
    // 遍历数组
    for (int i = 0; i < names_len; i++) {
        cJSON *name = cJSON_GetArrayItem(names,i);
        name_arr[i] = name->valuestring;
    }
    
    // 输出数组
    printf("name_arr: \n");
    for (int i = 0; i < names_len; i++) {
        printf("%s ",name_arr[i]);
    }
    
    // 释放内存
    cJSON_Delete(root);
    free(name_arr);
    
    return 0;
}

上述代码中,我们先定义了一个JSON字符串,然后使用cJSON_Parse函数将其解析成一个cJSON结构体。接着,我们通过cJSON_GetobjectItem函数获取JSON字符串中的names数组,并使用cJSON_GetArraySize函数获取其长度。我们再使用malloc函数动态分配一个字符串数组,并在遍历数组的过程中,使用cJSON_GetArrayItem函数获取一个字符串元素,并将其存储到字符串数组中。

最后,我们输出字符串数组,并释放内存。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐