【网络编程】第六章 json(安装+使用)


文章目录


一、json

json安装

下载

复制代码
sudo yum install jsoncpp-devel

json是一个kv键值对的序列化方式

复制代码
{
	"data": "value"
}

头文件#include <jsoncpp/json/json.h>

序列化

c++ 复制代码
void serialize(std::string& out)
{
    Json::Value root;//Value是万能变量
    root["x"] = _x;//序列化的时候会将所有内容转化为字符串
    root["y"] = _y;
    root["op"] = _ops;

    Json::FastWriter writer; // 这个是写成一行
    out = writer.write(root);//返回值string
}

反序列化

c++ 复制代码
bool deserialize( std::string &in)
{
    Json::Value root;
    Json::Reader rd;
    rd.parse(in, root);
    _x = root["x"].asInt();//变成整形
    _y = root["y"].asInt();
    _ops = root["op"].asInt();
}

运行,编译的时候需要指定库名-ljsoncpp

复制代码
g++ -o test test.cc -std=c++11 -ljsoncpp

命令行定义

源文件要用define 这样写#define MY_SELF 1

使用命令行参数方式代替修改源文件中的define,加上-DMY_SELF

复制代码
g++ -DMY_SELF  tcpServer.cpp -o tcpServer -lpthread -ljsoncpp

对应makefile如下修改

makefile 复制代码
.PHONY:all
all:tcpClient tcpServer
Mythod=-DMY_SELF 

tcpClient: tcpClient.cpp
	g++ $(Mythod) -o $@ $^ -std=c++11 -lpthread -ljsoncpp
tcpServer:tcpServer.cpp
	g++ $(Mythod) -o $@ $^ -std=c++11 -lpthread -ljsoncpp

.PHONY:clean
clean:
	rm -f tcpClient tcpServer

使用自己协议

复制代码
Mythod=-DMY_SELF 

使用json,就把后面注释

复制代码
Mythod=#-DMY_SELF

相关推荐
爱喝水的小周13 小时前
《UniApp 页面配置文件pages.json》
前端·uni-app·json
三天不学习1 天前
APIJSON:用JSON自动生成API,告别手写CRUD!【.NET 8 集成案例,也支持JAVA】
json·.net·apijson
StarRocks_labs2 天前
StarRocks 4.0:Real-Time Intelligence on Lakehouse
starrocks·人工智能·json·数据湖·存算分离
敲上瘾2 天前
Linux系统C++开发工具(四)—— jsoncpp 使用指南
linux·服务器·网络·c++·json
Dolphin_Home3 天前
轻量实用的 XML 与 JSON / 对象互转工具类(Jackson 实现)
xml·java·json
llxxyy卢3 天前
json的注入
json
柑橘乌云_3 天前
学习记录-package.json的scripts添加参数的方式有那些
前端·学习·node.js·json
.生产的驴3 天前
React 页面路由ReactRouter 路由跳转 参数传递 路由配置 嵌套路由
前端·javascript·react.js·前端框架·json·ecmascript·html5
StarRocks_labs3 天前
StarRocks 在 Cisco Webex 的探索与实践
数据库·starrocks·json·存算分离·olap 技术栈
.生产的驴4 天前
React 模块化Axios封装请求 统一响应格式 请求统一处理
前端·javascript·react.js·前端框架·json·ecmascript·html5