ToB企服应用市场:ToB评测及商务社交产业平台
标题:
什么是 JSON文件
[打印本页]
作者:
民工心事
时间:
2024-9-4 21:29
标题:
什么是 JSON文件
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它独立于语言,易于人阅读和编写,同时也易于机器解析和天生。JSON基于JavaScript的对象字面量语法,但是它作为一种数据格式,并不仅限于JavaScript中使用,许多编程语言都支持JSON的解析和天生。
一、JSON的基本结构
JSON主要由两种结构构成:
1.1
对象
在大括号{}内,包罗零个或多个键值对(key-value pairs)。每个键值对由一个字符串键和一个值组成,键和值之间使用冒号:分隔,差别的键值对之间用逗号,分隔。
{
"name": "Alice",
"age": 30,
"city": "New York"
}
复制代码
1.2 数组
在方括号[]内,包罗有序的值列表,值之间用逗号,分隔。数组中的值可以是任何正当的JSON数据类型,包括对象、数组或其他基本类型。
[
"apple",
"banana",
"cherry"
]
复制代码
1.3 JSON支持的数据类型
JSON支持的数据类型包括:
字符串(必须用双引号包围)
数字(整数或浮点数)
布尔值(true 或 false)
对象(键值对的聚集)
数组(值的有序列表)
null
二、案例说明
2.1 安装 cJSON 库 (如果使用的是Linux系统)
git clone https://github.com/DaveGamble/cJSON.git
cd cJSON
mkdir build
cd build
cmake ..
make
sudo make install
复制代码
2.2 JSON文件 user_info.json
{
"name": "John Doe",
"age": 30,
"is_employee": true,
"address": {
"street": "123 Main St",
"city": "Anytown"
},
"phone_numbers": [
"+1234567890",
"+0987654321"
]
}
复制代码
2.3 C语言程序来读取并解析JSON文件
#include <stdio.h>
#include <stdlib.h>
#include <cjson/cJSON.h>
int main() {
// 打开并读取JSON文件
FILE *fp = fopen("user_info.json", "r");
if (!fp) {
fprintf(stderr, "Failed to open file\n");
return 1;
}
// 读取文件内容到缓冲区
fseek(fp, 0, SEEK_END);
long fileSize = ftell(fp);
fseek(fp, 0, SEEK_SET);
char *buffer = (char*)malloc(fileSize + 1);
if (!buffer) {
fclose(fp);
fprintf(stderr, "Memory allocation failed\n");
return 1;
}
fread(buffer, 1, fileSize, fp);
fclose(fp);
buffer[fileSize] = '\0';
// 解析JSON
cJSON *root = cJSON_Parse(buffer);
if (!root) {
free(buffer);
fprintf(stderr, "Error before: %s\n", cJSON_GetErrorPtr());
return 1;
}
// 提取并打印信息
const char *name = cJSON_GetObjectItem(root, "name")->valuestring;
int age = cJSON_GetObjectItem(root, "age")->valueint;
int is_employee = cJSON_IsTrue(cJSON_GetObjectItem(root, "is_employee"));
cJSON *address = cJSON_GetObjectItem(root, "address");
const char *street = cJSON_GetObjectItem(address, "street")->valuestring;
const char *city = cJSON_GetObjectItem(address, "city")->valuestring;
cJSON *phone_numbers = cJSON_GetObjectItem(root, "phone_numbers");
int phone_count = cJSON_GetArraySize(phone_numbers);
printf("Name: %s\n", name);
printf("Age: %d\n", age);
printf("Employee: %s\n", is_employee ? "Yes" : "No");
printf("Address: %s, %s\n", street, city);
for (int i = 0; i < phone_count; i++) {
const char *number = cJSON_GetArrayItem(phone_numbers, i)->valuestring;
printf("Phone %d: %s\n", i+1, number);
}
// 清理
cJSON_Delete(root);
free(buffer);
return 0;
}
复制代码
这个程序起首打开并读取JSON文件的内容,然后使用 cJSON_Parse 函数将其解析成一个JSON对象。之后,通过一系列的 cJSON_GetObjectItem 和 cJSON_IsTrue 调用来提取和验证JSON数据的差别部分,末了打印出来。请留意,运行此程序前确保已经正确安装并配置了 cJSON 库。
三、JSON的用途
数据交换
:由于其简洁和可读性,JSON成为Web服务中最常用的数据交换格式之一。无论是Ajax请求还是RESTful API,服务器和客户端之间传递数据时,经常使用JSON格式。
配置文件
:很多应用程序和工具使用JSON格式来存储配置信息,由于它易于编辑且结构清晰。
数据存储
:虽然不像XML或数据库那样是专门设计用于数据存储的格式,但简朴的数据可以方便地以JSON格式保存在文件中,尤其是在不需要复杂查询功能的场景下。
命令行工具和脚本
:一些命令行工具和脚本语言使用JSON来传递参数或输出结果,由于它的结构化特性使得处理起来非常方便。
文档说明
:部分API文档会采用JSON Schema格式来描述API接口的输入输出结构,有助于开发者明白怎样构造请求息争析相应。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4