在RTThread里使用cjson软件包解析JSON数据包

rtthread里使用cjson软件包解析JSON的程序,json里面包含:姓名、年龄、身高。

首先,需要头文件:#include "cjson.h"。然后,使用 cJSON *cJSON_Parse(const char *value) 来解析一个 JSON 字符串,并返回一个 cJSON 结构体。现在可以使用它来读取姓名,年龄,身高信息:

// Get the name
cJSON *name = cJSON_GetObjectItem(root, "name");
if (name != NULL) {
    printf("Name: %s\n", name->valuestring);
}

// Get the age
cJSON *age = cJSON_GetObjectItem(root, "age");
if (age != NULL) {
    printf("Age: %d\n", age->valueint);
}

// Get the height
cJSON *height = cJSON_GetObjectItem(root, "height");
if (height != NULL) {
    printf("Height: %f\n", height->valuedouble);
}

解析这个数据包:

{
"tid":"tid123",
 "key": "key123",
 "userName": "name123",
 "password": 123,
 "ip": "1.1.1.1",
 "port": 123,
 "mountPoint": 123
}

首先,需要头文件:#include "cjson.h"。然后,使用 cJSON *cJSON_Parse(const char *value) 来解析一个 JSON 字符串,并返回一个 cJSON 结构体。 现在可以使用它来读取 tid、key、serName、password、ip、port、mountPoint 等信息:

// Get the tid
cJSON *tid = cJSON_GetObjectItem(root, "tid");
if (tid != NULL) {
    printf("TID: %s\n", tid->valuestring);
}

// Get the key
cJSON *key = cJSON_GetObjectItem(root, "key");
if (key != NULL) {
    printf("Key: %s\n", key->valuestring);
}

// Get the userName
cJSON *userName = cJSON_GetObjectItem(root, "userName");
if (userName != NULL) {
    printf("User Name: %s\n", userName->valuestring);
}

// Get the password
cJSON *password = cJSON_GetObjectItem(root, "password");
if (password != NULL) {
    printf("Password: %d\n", password->valueint);
}

// Get the ip
cJSON *ip = cJSON_GetObjectItem(root, "ip");
if (ip != NULL) {
    printf("IP: %s\n", ip->valuestring);
}

// Get the port
cJSON *port = cJSON_GetObjectItem(root, "port");
if (port != NULL) {
    printf("Port: %d\n", port->valueint);
}

// Get the mountPoint
cJSON *mountPoint = cJSON_GetObjectItem(root, "mountPoint");
if (mountPoint != NULL) {
    printf("Mount Point: %d\n", mountPoint->valueint);
}

cJSON是一个轻量级的JSON解析库,用于解析和生成JSON数据。在cJSON中,可以使用不同的宏定义来表示JSON中的不同类型。例如,cJSON_False表示JSON中的布尔值false,cJSON_True表示JSON中的布尔值true,cJSON_NULL表示JSON中的null,cJSON_Number表示JSON中的数字,cJSON_String表示JSON中的字符串,cJSON_Array表示JSON中的数组,cJSON_Object表示JSON中的对象。\[1\] 要解析JSON文件,首先需要将JSON文件读取为字符串。然后,可以使用cJSON库中的函数来解析该字符串并获取JSON中的各个值。例如,可以使用cJSON_Parse函数将JSON字符串解析为cJSON对象。然后,可以使用cJSON_GetObjectItem函数获取JSON对象中的具体值。最后,可以使用cJSON_Print函数将解析后的JSON对象转换为字符串输出。\[3\] 需要注意的是,解析JSON文件时,需要根据JSON文件的具体结构来使用相应的cJSON函数进行解析。例如,如果JSON文件中包含数组,则可以使用cJSON_GetArrayItem函数获取数组中的元素。如果JSON文件中包含嵌套的对象,则可以使用cJSON_GetObjectItem函数获取对象中的值。 总结起来,要解析JSON文件,可以按照以下步骤进行操作: 1. 将JSON文件读取为字符串。 2. 使用cJSON_Parse函数将JSON字符串解析为cJSON对象。 3. 使用cJSON_GetObjectItem函数获取JSON对象中的具体值。 4. 使用cJSON_Print函数将解析后的JSON对象转换为字符串输出。 参考资料: \[1\] cJSON官方文档 \[2\] 示例JSON数据来源 #### 引用[.reference_title] - *1* [【C语言实用库】cJSON-解析json数据的利器](https://blog.csdn.net/u013376865/article/details/121317752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [使用cJSON解析JSON](https://blog.csdn.net/weixin_39859220/article/details/113010358)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值