在Linux环境下使用C语言解析JSON数据,可以使用多种开源库,以下是两种常用的JSON解析库及其使用方法:
1. cJSON库
cJSON是一个轻量级的JSON解析库,适合用于嵌入式系统和资源受限的环境。
安装与配置
1、下载并解压cJSON:
```sh
wget http://sourceforge.net/projects/json-c/files/json-c/cJSON_x86.tar.bz2
tar -xjvf cJSON_x86.tar.bz2
```
2、编译示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main(int argc, char* argv[]) {
char buf[1024] = "{"date":"20181128"}";
cJSON *root = cJSON_Parse(buf);
if (root == NULL) {
printf("parse error
");
return -1;
}
cJSON *value = cJSON_GetObjectItem(root, "date");
if (value == NULL) {
printf("getvalue error
");
cJSON_Delete(root);
return -1;
}
char *data = cJSON_Print(value);
if (data == NULL) {
printf("printf error
");
cJSON_Delete(root);
return -1;
}
printf("data=%s
", data);
free(data);
cJSON_Delete(root);
return 0;
}
```
3、编译命令:
```sh
gcc json.c -o json -I /path/to/cJSON/include/cjson/ -L /path/to/cJSON/lib -lcjson
```
2. json-c库
json-c是一个更全面的JSON解析库,支持更多的功能,如引用计数、内存管理等。
安装与配置
1、安装json-c:
```sh
git clone https://github.com/json-c/json-c.git
cd json-c
sh autogen.sh
./configure --enable-threading
make
make install
```
2、编译示例代码:
```c
#include <stdio.h>
#include <json-c/json.h>
int main() {
const char *text = "{"name":"John","age":30,"city":"New York"}";
struct json_object *parsed_json;
struct json_object *name;
struct json_object *age;
struct json_object *city;
/* This is how you actually parse the JSON string into an object */
parsed_json = json_tokener_parse(text);
/* Get name */
name = json_object_object_get_ex(parsed_json, "name", &k);
if (name == NULL) {
fprintf(stderr, "Could not get 'name' from JSON
");
exit(EXIT_FAILURE);
}
printf("Name: %s
", json_object_get_string(name));
/* Get age */
age = json_object_object_get_ex(parsed_json, "age", &k);
if (age == NULL) {
fprintf(stderr, "Could not get 'age' from JSON
");
exit(EXIT_FAILURE);
}
printf("Age: %d
", json_object_get_int(age));
/* Get city */
city = json_object_object_get_ex(parsed_json, "city", &k);
if (city == NULL) {
fprintf(stderr, "Could not get 'city' from JSON
");
exit(EXIT_FAILURE);
}
printf("City: %s
", json_object_get_string(city));
return 0;
}
```
3、编译命令:
```sh
gcc json.c -o json -ljson-c
```
是两种在Linux环境下使用C语言解析JSON数据的方法和示例代码,cJSON适用于简单的JSON解析需求,而json-c则提供了更多的功能和灵活性,根据具体需求选择合适的库进行开发。
到此,以上就是小编对于linux c json 解析的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/71259.html