深入解析JSON格式及其在客户端的应用

版权申诉
0 下载量 96 浏览量 更新于2024-11-03 收藏 182KB RAR 举报
资源摘要信息:"JSON是JavaScript Object Notation的缩写,它是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON基于JavaScript语言的一个子集,但JSON是独立于语言的文本格式。它可以用在多种编程语言中,包括JavaScript、PHP、Python、Java等。 JSON格式最初由Douglas Crockford提出并推广,它以一种与语言无关的方式,定义了数据描述的结构,通过属性名和属性值来描述数据对象。这种格式使得数据在客户端和服务器之间传输变得十分方便,并且易于被各种编程语言处理。 在JSON格式中,数据以键值对的形式出现。一个JSON对象可以包含多个键值对,键(key)与值(value)之间用冒号(:)分隔,不同的键值对之间用逗号(,)分隔。值可以是字符串、数字、数组、布尔值或null,也可以是另一个JSON对象。JSON对象用大括号({})括起来,而JSON数组用方括号([])括起来。 JSON在Web开发中尤为常用,特别是在前后端分离的开发模式下,前端通过Ajax请求从服务器获取JSON格式的数据,并将其解析为JavaScript对象,以实现动态内容的展示和交互功能。服务器端也会解析前端发送的JSON数据,并进行相应的处理。 在客户端和服务器端处理JSON格式数据时,通常需要使用到相应的库或API。在JavaScript中,浏览器提供了JSON对象,它包含了parse和stringify两个方法,分别用于将JSON字符串转换为JavaScript对象,以及将JavaScript对象转换为JSON字符串。其他编程语言也有类似的库,如Python的json模块,Java的JSONObject类等。 本文档《JSON 入门指南》可能会详细介绍了JSON的基础知识,并通过具体的代码示例演示了如何在客户端使用JavaScript处理JSON数据,如何从服务器获取JSON数据,以及如何将JavaScript对象转换为JSON格式发送到服务器。这对于想要快速掌握JSON数据交换格式的开发者来说,是一份非常实用的学习材料。"

#include <jansson.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_ECU 10 typedef struct { char ddd[16]; } ECU; typedef struct { char zhushini[16]; char qusi[16]; } Nishizhu; typedef struct { char sourceaddress[5]; char target_ip[16]; char local_ip[16]; char target_port[6]; ECU ecu[MAX_ECU]; Nishizhu nishizhu; } TCPSetting; typedef struct { TCPSetting tcp_setting; } Config; int main() { // 初始化结构体 Config config; memset(&config, 0, sizeof(Config)); strcpy(config.tcp_setting.sourceaddress, "abcd"); strcpy(config.tcp_setting.target_ip, "192.168.1.100"); strcpy(config.tcp_setting.local_ip, "192.168.1.200"); strcpy(config.tcp_setting.target_port, "12345"); strcpy(config.tcp_setting.ecu[0].ddd, "ecu1"); strcpy(config.tcp_setting.ecu[1].ddd, "ecu2"); strcpy(config.tcp_setting.nishizhu.zhushini, "zhushini"); strcpy(config.tcp_setting.nishizhu.qusi, "qusi"); // 将结构体转成json json_t *root = json_object(); json_t *tcp_setting = json_object(); json_object_set_new(root, "tcp_setting", tcp_setting); json_object_set_new(tcp_setting, "sourceaddress", json_string(config.tcp_setting.sourceaddress)); json_object_set_new(tcp_setting, "target_ip", json_string(config.tcp_setting.target_ip)); json_object_set_new(tcp_setting, "local_ip", json_string(config.tcp_setting.local_ip)); json_object_set_new(tcp_setting, "target_port", json_string(config.tcp_setting.target_port)); json_t *ecu = json_array(); for (int i = 0; i < MAX_ECU; ++i) { json_t *ecu_obj = json_object(); json_object_set_new(ecu_obj, "ddd", json_string(config.tcp_setting.ecu[i].ddd)); json_array_append_new(ecu, ecu_obj); } json_object_set_new(tcp_setting, "ecu", ecu); json_t *nishizhu = json_object(); json_object_set_new(nishizhu, "zhushini", json_string(config.tcp_setting.nishizhu.zhushini)); json_object_set_new(nishizhu, "qusi", json_string(config.tcp_setting.nishizhu.qusi)); json_object_set_new(tcp_setting, "nishizhu", nishizhu); // 保存成json文件 FILE *fp = fopen("config.json", "w"); if (fp == NULL) { printf("Failed to open file\n"); exit(1); } json_dumpf(root, fp, JSON_INDENT(4)); fclose(fp); // 释放内存 json_decref(root); return 0; } 运行上面的代码 保持的json文件中不包含ecu参数的内容

2023-06-11 上传