Linux——Json发送数据包

 

一:介绍

  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结构体。

猜你喜欢

转载自blog.csdn.net/genzld/article/details/84712166