概述
一:介绍
JSON(JavaScript Object Notation)是一种 数据交换格式,我们介绍C++中的使用方法。
使用JsonCpp之前先了解几个主要的类:
Json::Value | 可以表示库里的所有类型,比如:int string boject,array等 |
Json::Reader | 将Json文件流或字符串流解析到Json::Value,主要通过函数parse() |
Json::Writer | 和Json::Reader相反,输出不带格式的Json包 |
Json::StyleWriter | 同上,但是输出带格式的Json包 |
以上类的功能: | 从字符串解析,从文件解析,写入文件,读取文件,输出Json,读取Json等 |
二:认识Json字符串
普通字符串 , Json字符串 ,Json对象的区别。
普通字符串: | 指使用“双引号”或单引号包括的字符。char str = "hello" |
Json字符串: | 指符合Json格式要求的额js字符串。 例如: var jsonStr = "{StudentID:'100' , Name:'wangbao' , Hometown:'USA'}"; |
Json对象: | 指符合Json格式要求的js对象。 例如: var jsonStr = "{StudentID:“100” , Name:“wangbao”, Hometown:“USA”}"; |
三:创建Json包
方式一:
Json::Value val;
val["name"] = "kebi";
val["password"] = "123456";
//元素值可具有的类型:string,array,true,int等
四:发送Json包
基于TCP协议:
send(sockfd , toStyledString().c_str() , strlen ( val.toStyledString(). c_str()),0))
C++ Jsoncpp打包Json函数toStyledString():如果有的项中含有中文,那么使用该函数 生成的字符串中的中文部分变成 u加4个16进制数字。
源代码连接:http://sourceforge.net/projects/jsoncpp/files/
五:接受并解析Json包
基于TCP协议:
//服务器接受数据
if(0 < recv(clifd,buff,127,0))
{
//解析Json包
Json::Value root;
Josn::Reader read;
if(-1 == read.parse(buff,val))//解析函数parse
{
cout<<"read.parse fail:"<<endl;
return 0;
}
//输出Json包
cout<<"name:"<<val["name"].asString()<<endl;
cout<<"password:"<<val["password"].asString()<<endl;
}
函数parse(buff,val);将val 这个Json数据包 解析为 Json结构体。
最后
以上就是糊涂丝袜为你收集整理的Linux——Json发送数据包的全部内容,希望文章能够帮你解决Linux——Json发送数据包所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复