[C++从零实现Json-Rpc框架]第二弹——使用JsonCpp库并封装Json工具类

[C++从零实现Json-Rpc框架]第二弹——使用JsonCpp库并封装Json工具类

目录

一、前言

二、JsonCpp库

1. Json数据格式

2. JsonCpp介绍

3. JsonCpp 使用

4. 封装Jaon工具类

三、结语


一、前言

        在本篇博文中,博主将为大家带来【C++从零实现Json-Rpc框架】的第二弹,即使用JsonCpp库,并通过这个库来封装Json工具类方便我们后续网络通信的序列化和反序列。

二、JsonCpp库

1. Json数据格式

Json 是⼀种数据交换格式,它采⽤完全独立于编程语言的文本格式来存储和表示数据

例如:我们想表示⼀个同学的学⽣信息

●C 代码表⽰

char *name = "xx"; int age = 18; float score[3] = {88.5, 99, 58}; 

● Json 表示

{ "姓名" : "xx", "年龄" : 18, "成绩" : [88.5, 99, 58], "爱好" :{ "书籍" : "西游记", "运动" : "打篮球" } }

Json 的数据类型包括对象,数组,字符串,数字等

对象:使⽤花括号 {} 括起来的表⽰⼀个对象
数组:使⽤中括号 [] 括起来的表⽰⼀个数组
字符串:使⽤常规双引号 "" 括起来的表⽰⼀个字符串
数字:包括整形和浮点型,直接使⽤

在这个示例中,person 是一个对象,包含了多个属性。其中 name 和 city 是字符串,age 和 pi 是数字,courses 和 numbers 是数组,address是另一个对象,嵌套在person这个对象里面

//Json { "person": { "name": "Alice", "age": 25, "isStudent": false, "courses": ["Math", "Science"], "address": { "street": "123 Main St", "city": "New York" } }, "numbers": [1, 2, 3, 4], "message": "Hello, world!", "pi": 3.14159 }

2. JsonCpp介绍

 Jsoncpp 库主要是⽤于实现 Json 格式数据的序列化和反序列化,它实现了将多个数据对象组织成为 json 格式字符串,以及将 Json 格式字符串解析得到多个数据对象的功能。 先看⼀下 Json 数据对象类的表⽰
class Json::Val

Read more

【Java开发日记】带你说说 SpringMVC 的处理流程

【Java开发日记】带你说说 SpringMVC 的处理流程

目录 1、曾经的王者----Servlet 2、想要更进一步 3、Spring MVC----两级控制器方式 4、DispatcherServlet----前端控制器 5、HandlerMapper----请求映射专家 6、Handler 的拦路虎----HandlerInterceptor 7、次级控制器----Handler 8、Handler 与 HandlerInterceptor 的桥梁---HandlerExecutionChain 9、解耦的关键----ModelAndView 10、视图渲染查找----ViewResolver 11、数据渲染----View 1、曾经的王者----Servlet 在刚接触到使用 Java 进行 Web 开发的时候,Spring MVC 远没有今天这么流行,君不见曾经的王者 Servlet 繁盛一时的场面。现在回想起来,使用 Servlet 进行开发虽然不像现在这么容易,好多的事情需要自己做,但是 Servlet 使得开发的逻辑变得十分清晰,尤其是在

By Ne0inhk
SpringBoot YAML 配置读取机制 + 数据库自动初始化原理

SpringBoot YAML 配置读取机制 + 数据库自动初始化原理

👨‍💻程序员三明治:个人主页 🔥 个人专栏: 《设计模式精解》《重学数据结构》 🤞先做到 再看见! 目录 * 一、YAML 配置的读取流程(核心:配置绑定) * 1. 配置文件加载:SpringBoot 自动识别 YAML * 2. 配置绑定:将 YAML 键值对映射到 Java 类 * (1)@Value 注解(单个配置项绑定) * (2)@ConfigurationProperties 注解(批量绑定,核心) * 3. 容器管理:绑定后的配置类成为 Spring Bean * 二、数据库自动初始化原理(核心:自动配置 + 配置绑定) * 前提:引入对应的 Starter 依赖 * 1. 自动配置类:

By Ne0inhk
别再只会CRUD了!Java程序员用Spring AI转型AI Agent开发,薪资翻倍不是梦!

别再只会CRUD了!Java程序员用Spring AI转型AI Agent开发,薪资翻倍不是梦!

1 概 述 随着AI大模型底层技术的不断突破,大模型解决实际问题的能力也在千行百业展现。在此,我们听到最多的一个词就是“AI Agent”,那什么是AI Agent, 什么是Agent开发,以及与Agent开发相关的一些技术栈,本文将以一个JAVA应用开发工程师的视角来一探究竟。 1.1 什么是AI Agent 根据百度翻译,Agent 的中文意思是“代理人”,因此从字面意义来讲,AI Agent就是 AI代理人 的意思。结合目前AI主要指大模型技术,尤其是大语言模型技术(Large Language Model,LLM),因此,AI Agent又可进一步理解为 大语言模型的代理。具体的,AI Agent是指基于人工智能大模型,如DeepSeek-R1,开发的软件应用,它作为大模型的代理,接收用户的自然语言指令,配合大模型来完成特定的业务场景功能。 1.2 AI Agent开发现状 目前,

By Ne0inhk

龙虾尝鲜记(2)——装ubuntu(续)

装 ubuntu 还折腾了好几下,现在终于把系统能稳妥了。回头再来记一下,给看到想弄龙虾的同学提个醒,对应工作先做到前面,免得遇到问题解决不了,还没入门就出门了。         一、系统版本的确定         这个问题我个人以为要结合自己的实际情况:如果是在虚拟机上装,建议选择 2404 LTS,相对稳定;如果是在实体机上装,要根据自己的硬件来避坑,据某 AI 说对 N 卡的支持不是很好,有特定的版本要求。还有就是是否强烈需要蓝牙、指纹、隐藏网络、摄像头等方面的功能。         因为装(实体机) 2404 2404 就是因为驱动(MX250)有些问题,折腾了好几下实在懒得折腾就问了下 AI,它给推荐了 Pop_OS 2404, 结果掉进更大的坑里:蓝牙键盘连上了打不出字来、指纹不能用(到现在也不能用,因为指纹不太关痛痒,没修复好就暂时作罢)、无法连接到隐藏网络……         指纹不能用问题不大,

By Ne0inhk