Terminal={“soft_version”:“v1.0.0”, //端侧主机程序版本 “det_version”:“v1.2.5” //端侧主机检测模型版本 }怎么用c语言的json库写
时间: 2023-09-15 19:22:27 浏览: 35
假设您使用的是 cJSON 库,可以按照以下方式编写代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main() {
// 创建 JSON 对象
cJSON *terminal = cJSON_CreateObject();
cJSON_AddStringToObject(terminal, "soft_version", "v1.0.0");
cJSON_AddStringToObject(terminal, "det_version", "v1.2.5");
// 将 JSON 对象转换为字符串
char *json_str = cJSON_PrintUnformatted(terminal);
// 输出 JSON 字符串
printf("%s\n", json_str);
// 释放内存
free(json_str);
cJSON_Delete(terminal);
return 0;
}
```
输出结果为:
```json
{"soft_version":"v1.0.0","det_version":"v1.2.5"}
```
这个程序创建了一个 cJSON 对象 `terminal`,并向其中添加了两个字符串属性。然后使用 `cJSON_PrintUnformatted` 函数将其转换为字符串,并输出结果。最后释放内存。
相关问题
Terminal={“model”:0, //端侧主机型号 “active”: 1685020015, //端侧主机启用时间 “soft_version”:“v1.0.0”, //端侧主机程序版本 “det_version”:“v1.2.5” //端侧主机检测模型版本 }解析一下这个jaon格式
这是一个JSON格式的对象,其中包含四个属性(property):
1. "model":表示端侧主机型号,其值为0;
2. "active":表示端侧主机启用时间,其值为1685020015;
3. "soft_version":表示端侧主机程序版本,其值为"v1.0.0";
4. "det_version":表示端侧主机检测模型版本,其值为"v1.2.5"。
同样,可以使用 JavaScript 的 JSON.parse() 方法将其解析为一个 JavaScript 对象,示例代码如下:
```
const jsonStr = '{"model":0, "active":1685020015, "soft_version":"v1.0.0", "det_version":"v1.2.5"}';
const obj = JSON.parse(jsonStr);
console.log(obj.model); // 输出 0
console.log(obj.active); // 输出 1685020015
console.log(obj.soft_version); // 输出 "v1.0.0"
console.log(obj.det_version); // 输出 "v1.2.5"
```
同样,也可以使用cjson库解析该JSON格式,示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h" // 引入cjson头文件
int main()
{
const char *jsonStr = "{\"model\":0, \"active\":1685020015, \"soft_version\":\"v1.0.0\", \"det_version\":\"v1.2.5\"}";
cJSON *root = cJSON_Parse(jsonStr); // 解析JSON字符串
if (root == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *model = cJSON_GetObjectItem(root, "model"); // 获取属性 model 的值
cJSON *active = cJSON_GetObjectItem(root, "active"); // 获取属性 active 的值
cJSON *soft_version = cJSON_GetObjectItem(root, "soft_version"); // 获取属性 soft_version 的值
cJSON *det_version = cJSON_GetObjectItem(root, "det_version"); // 获取属性 det_version 的值
printf("model=%d\n", model->valueint); // 输出 model 的值
printf("active=%d\n", active->valueint); // 输出 active 的值
printf("soft_version=%s\n", soft_version->valuestring); // 输出 soft_version 的值
printf("det_version=%s\n", det_version->valuestring); // 输出 det_version 的值
cJSON_Delete(root); // 释放资源
return 0;
}
```
执行该程序,输出结果如下:
```
model=0
active=1685020015
soft_version=v1.0.0
det_version=v1.2.5
```
可以看到,通过cjson库解析该JSON格式,也可以得到与前面使用JavaScript解析的结果相同。
Terminal={“soft_version”:“v1.0.0”, //端侧主机程序版本 “det_version”:“v1.2.5” //端侧主机检测模型版本 }怎么用c语言的json库解析出来
同样假设您使用的是 cJSON 库,可以按照以下方式编写代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main() {
// 定义 JSON 字符串
const char *json_str = "{\"soft_version\":\"v1.0.0\",\"det_version\":\"v1.2.5\"}";
// 解析 JSON 字符串
cJSON *terminal = cJSON_Parse(json_str);
if (!terminal) {
printf("Error before: %s\n", cJSON_GetErrorPtr());
return 1;
}
// 获取 JSON 属性
cJSON *soft_version = cJSON_GetObjectItemCaseSensitive(terminal, "soft_version");
cJSON *det_version = cJSON_GetObjectItemCaseSensitive(terminal, "det_version");
// 输出 JSON 属性值
printf("soft_version: %s\n", cJSON_GetStringValue(soft_version));
printf("det_version: %s\n", cJSON_GetStringValue(det_version));
// 释放内存
cJSON_Delete(terminal);
return 0;
}
```
输出结果为:
```
soft_version: v1.0.0
det_version: v1.2.5
```
这个程序首先定义了一个 JSON 字符串 `json_str`,然后使用 `cJSON_Parse` 函数将其解析为 cJSON 对象 `terminal`。如果解析失败,会输出错误信息并退出程序。然后使用 `cJSON_GetObjectItemCaseSensitive` 函数获取 JSON 属性对象,并使用 `cJSON_GetStringValue` 函数获取属性值。最后释放内存。