龙空技术网

使用Jsoncpp实现字符串的序列化与反序列化

神秘可乐v 103

前言:

而今同学们对“jsoncpp使用”大体比较关怀,兄弟们都需要分析一些“jsoncpp使用”的相关内容。那么小编在网摘上搜集了一些关于“jsoncpp使用””的相关文章,希望姐妹们能喜欢,兄弟们一起来了解一下吧!

使用jsoncpp从变量创建一个json对象

假设现在只有一些变量,其中便利定义如下:

string tags= "grade";

string teacherName = "boss";

int classGrade = 6;

string studentsName[3] = {"zhang","wang","li"};

uint studentsAge[3] = {5,6,7};

float averagescore = 99.9;

现在需要将以上变量转化成Json对象,再进行序列化,以便于数据传输,其中变量转Json字符串的方法如下。

void serializeVariableToJson(){

Json::Value gradeJson_;

Json::Value gradeJsonContent_;

Json::Value studetsJsonContent_;

//将信息标识填充至Json对象

gradeJson_["tag"] = tags;

//填充年级的信息

gradeJsonContent_["teacher"] = teacherName;

gradeJsonContent_["class"] = classGrade;

//填充学生的信息

studetsJsonContent_["name"]= studentsName[3];

studetsJsonContent_["age"]= studentsAge[3];

studetsJsonContent_["averagescore"]= averagescore;

//将学生信息包含至年级信息下

gradeJsonContent_["students"] = studetsJsonContent_;

//将年级信息填充至Json对象

gradeJson_["grade1"] = gradeJsonContent_;

}

此时gradeJson为包含所有信息的Json对象,将其打印出来,其值如下:

{

"tag": "grade",

"grade1":{

"teacher": "Angle",

"class": 6,

"students": {

"name":["zhang","wang","li"],

"age": [5,6,7],

"averagescore": 99.9

}

}

}

提取Json格式的字符串中的值提取到诸多变量中

假设已经存在一个Json对象,此时需要将Json对象中的值提取到对应的变量中,假设Json对象如下:

Json::Value data = {

"tag": "grade",

"grade1":{

"teacher": "Angle",

"class": 6,

"students": {

"name":["zhang","wang","li"],

"age": [5,6,7],

"averagescore": 99.9

}

}

}

现在需要将以上Json对象转化成变量,以便于程序使用,假设程序中已经有如下定义:

string tags = "";

string teacherName = "";

int classGrade = 0 ;

string studentsName[3] = {};

uint studentsAge[3] = {};

float averagescore = 0 ;

在此进行反序列化:

void deserializeJsonToVariable(){

Json::Reader reader_;

Json::Value value_;

if (reader_.parse(data, value_)){

tags = value["tag"].asString();

teacherName = value["grade1"]["teacher"].asString();

classGrade = value["grade1"]["class"].asInt();

for(int count_=0;count_<3;count_++){

studentsName[count_]=value["grade1"]["students"]["name"][count_].asString();

studentsAge[count_]=value["grade1"]["students"]["age"][count_].asInt();

}

averagescore = value["grade1"]["students"]["averagescore"].asDouble();

}

此时完成数据从Json到变量的附值,其值如下:

string tags= "grade";

string teacherName = "boss";

int classGrade = 6;

string studentsName[3] = {"zhang","wang","li"};

uint studentsAge[3] = {5,6,7};

float averagescore = 99.9;

标签: #jsoncpp使用 #jsoncpp解析json文件 #jsoncpp使用方法