shiro

关于CJSON的使用
之前使用过Adruino上的JSON,觉得JSON是一种非常简单和易用的工具,对于数据的发送非常好用。这次的项目平...
扫描右侧二维码阅读全文
17
2018/07

关于CJSON的使用

之前使用过Adruino上的JSON,觉得JSON是一种非常简单和易用的工具,对于数据的发送非常好用。这次的项目平台基于C语言,经过多方查找使用cJSON这个包。

详细使用细节可以参考:
https://blog.csdn.net/fengxinlinux/article/details/53121287
这个写的还是非常好的

具体的包可以在:
https://sourceforge.net/projects/cjson/files/latest/download
这里下载

下载完毕,解压后会得到一个cJSON.hcJSON.c这两个关键性的文件,其实中间还有一个test.c,可以跑一下看一下效果,得到两个的文件之后可以把他放在自己的文件夹中了。直接调用就可以了

我写的就比较简单了

char *create_JS(struct in_mess* mes){
    if(!mes){
        printf("creating JSON ERROR\n");
        exit(3);
    }
    cJSON *json;

    json = cJSON_CreateObject();

    cJSON_AddNumberToObject(json, "Distance", mes->distance);

    char *out = cJSON_PrintUnformatted(json);
    printf("%s\n", out);

    cJSON_Delete(json);

    return out;
}

struct out_mess* parse_JS(char *mes){
    if(!mes){
        printf("Parsing JSON _ No message!\n");
        exit(4);
    }

    cJSON *json, *GPS, *status, *RSSI;

    json = cJSON_Parse(mes);

    status = cJSON_GetObjectItem(json, "statues");
    RSSI = cJSON_GetObjectItem(json, "RSSI");

    struct  out_mess *m1 = (struct  out_mess*) malloc(sizeof(struct out_mess));

    for (int i = 0; i < 2; ++i) {
        GPS = cJSON_GetArrayItem(json, i);
        m1->GPS[i] = GPS->valuedouble;
    }
    m1->RSSI = RSSI->valueint;
    m1->status = status->valueint;

    cJSON_Delete(json);

    return m1;
}

Last modification:August 27th, 2018 at 02:37 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment