jsoncpp封装和解析字符串、数字、布尔值和数组
来源:互联网 发布:java中main函数 编辑:程序博客网 时间:2024/04/26 22:20
使用jsoncpp进行字符串、数字、布尔值和数组的封装与解析。
1)下载jsoncpp的代码库 百度网盘地址 :http://pan.baidu.com/s/1ntqQhIT
2)解压缩文件 jsoncpp.rar
unzip jsoncpp.rar
3)修改jsoncpp/src/main.cpp文件
vim src/main.cpp
1 #include <string> 2 #include <json/json.h> 3 #include "stdio.h" 4 5 int ReadJson(const std::string &); 6 std::string writeJson(); 7 8 int main(int argc, char** argv) 9 { 10 using namespace std; 11 12 std::string strMsg; 13 14 cout<<"--------------------------------"<<endl; 15 strMsg = writeJson(); 16 cout<< "json write : " << endl << strMsg << endl; 17 cout<<"--------------------------------"<<endl; 18 cout<< "json read :" << endl; 19 ReadJson(strMsg); 20 cout<<"--------------------------------"<<endl; 21 22 return 0; 23 } 24 25 int ReadJson(const std::string & strValue) 26 { 27 using namespace std; 28 29 Json::Reader reader; 30 Json::Value value; 31 32 if (reader.parse(strValue, value)) 33 { 34 //解析json中的对象 35 string out = value["name"].asString(); 36 cout << "name : " << out << endl; 37 cout << "number : " << value["number"].asInt() << endl; 38 cout << "value : " << value["value"].asBool() << endl; 39 cout << "no such num : " << value["haha"].asInt() << endl; 40 cout << "no such str : " << value["hehe"].asString() << endl; 41 42 //解析数组对象 43 const Json::Value arrayNum = value["arrnum"]; 44 for (unsigned int i = 0; i < arrayNum.size(); i++) 45 { 46 cout << "arrnum[" << i << "] = " << arrayNum[i]; 47 } 48 //解析对象数组对象 49 Json::Value arrayObj = value["array"]; 50 cout << "array size = " << arrayObj.size() << endl; 51 for(unsigned int i = 0; i < arrayObj.size(); i++) 52 { 53 cout << arrayObj[i]; 54 } 55 //从对象数组中找到想要的对象 56 for(unsigned int i = 0; i < arrayObj.size(); i++) 57 { 58 if (arrayObj[i].isMember("string")) 59 { 60 out = arrayObj[i]["string"].asString(); 61 std::cout << "string : " << out << std::endl; 62 } 63 } 64 } 65 66 return 0; 67 } 68 69 std::string writeJson() 70 { 71 using namespace std; 72 73 Json::Value root; 74 Json::Value arrayObj; 75 Json::Value item; 76 Json::Value iNum; 77 78 item["string"] = "this is a string"; 79 item["number"] = 999; 80 item["aaaaaa"] = "bbbbbb"; 81 arrayObj.append(item); 82 83 //直接对jsoncpp对象以数字索引作为下标进行赋值,则自动作为数组 84 iNum[1] = 1; 85 iNum[2] = 2; 86 iNum[3] = 3; 87 iNum[4] = 4; 88 iNum[5] = 5; 89 iNum[6] = 6; 90 91 //增加对象数组 92 root["array"] = arrayObj; 93 //增加字符串 94 root["name"] = "json"; 95 //增加数字 96 root["number"] = 666; 97 //增加布尔变量 98 root["value"] = true; 99 //增加数字数组100 root["arrnum"] = iNum;101 102 root.toStyledString();103 string out = root.toStyledString();104 105 return out;106 }
4)在目录jsoncpp/ 下执行make命令
jsoncpp$ makemkdir -p objs/src/json; mkdir -p objs/src;g++ -c -Wall -Werror -g -I include src/json/json_reader.cpp -o objs/src/json/json_reader.og++ -c -Wall -Werror -g -I include src/json/json_value.cpp -o objs/src/json/json_value.og++ -c -Wall -Werror -g -I include src/json/json_writer.cpp -o objs/src/json/json_writer.og++ -c -Wall -Werror -g -I include src/main.cpp -o objs/src/main.og++ objs/src/json/json_reader.o objs/src/json/json_value.o objs/src/json/json_writer.o objs/src/main.o -o main
5)运行jsoncpp/下的main文件
./main
6)运行结果如下
fengbo: jsoncpp$ ./main --------------------------------json write : { "array" : [ { "aaaaaa" : "bbbbbb", "number" : 999, "string" : "this is a string" } ], "arrnum" : [ null, 1, 2, 3, 4, 5, 6 ], "name" : "json", "number" : 666, "value" : true}--------------------------------json read :name : jsonnumber : 666value : 1no such num : 0no such str : arrnum[0] = nullarrnum[1] = 1arrnum[2] = 2arrnum[3] = 3arrnum[4] = 4arrnum[5] = 5arrnum[6] = 6array size = 1{ "aaaaaa" : "bbbbbb", "number" : 999, "string" : "this is a string"}string : this is a string--------------------------------
作者:风波
mail : fengbohello@qq.com
0 0
- jsoncpp封装和解析字符串、数字、布尔值和数组
- jsoncpp封装和解析字符串、数字、布尔值和数组
- jsoncpp封装和解析字符串、数字、布尔值和数组
- jsoncpp封装和解析字符串、数字、布尔值和数组
- 数字、浮点、布尔型、字符串和数组(php教程一)
- 第十三章 使用原始值:字符串、数字和布尔值
- jsoncpp构造json字符串和json数组
- NULL和空字符串的布尔值
- Swift数据类型--布尔和字符串
- 详解将jsoncpp编译so库,进行封装和解析JSON数据
- 冒泡排序数字数组和字符串数组
- python数据类型--数字,布尔值,字符串
- 字符串和数组的解析
- jsoncpp解析拼装数组
- jsoncpp解析拼装数组
- jsoncpp解析数组
- jsoncpp解析拼装数组
- C++的Json解析:jsoncpp 和boost
- 通过API远程操作HBase
- BLE多连接
- Linq Distinct方法的扩展
- Spinner
- C++中的单例模式
- jsoncpp封装和解析字符串、数字、布尔值和数组
- 为什么视频用udp不用tcp
- C# 线程间操作无效
- 删除或者覆盖掉git远端库里面的某部分文件
- LeetCode--No.223--Rectangle Area
- 一个模板方法的例子
- Andorid之GreenDao
- 带GPG签名的Git tag
- Android Lib层打印log之------bionic库打印log