安装jsoncpp库以及使用

JSON

JavaScript Object Notation --> JSON。是轻量级的数据交换格式,使用 Javascript语法来描述数据对象。

json对象:{}表示的无序KV结构,用逗号分割,用于结构化的数据(如结构体等)。

json数组:[]表示的有序集合

安装jsoncpp库

需要下载jsoncpp的库

sudo yum install jsoncpp-devel -y

安装好库以后,库的路径为 /lib64/libjsoncpp* ,头文件的路径是 /usr/include/jsoncpp/

[yyq@VM-8-13-centos 2023_04_22_Calculator_TCPSocket]$ ls /lib64/libjsoncpp* -al
lrwxrwxrwx 1 root root     15 Apr 23 18:42 /lib64/libjsoncpp.so -> libjsoncpp.so.0
lrwxrwxrwx 1 root root     20 Apr 23 18:42 /lib64/libjsoncpp.so.0 -> libjsoncpp.so.0.10.5
-rwxr-xr-x 1 root root 227656 Apr 24  2016 /lib64/libjsoncpp.so.0.10.5
[yyq@VM-8-13-centos 2023_04_22_Calculator_TCPSocket]$ ls /usr/include/jsoncpp/json -al
total 88
drwxr-xr-x 2 root root  4096 Apr 23 18:42 .
drwxr-xr-x 3 root root  4096 Apr 23 18:42 ..
-rw-r--r-- 1 root root  2203 Jul 23  2015 assertions.h
-rw-r--r-- 1 root root   662 Jul 23  2015 autolink.h
-rw-r--r-- 1 root root  3860 Jul 23  2015 config.h
-rw-r--r-- 1 root root  1509 Jul 23  2015 features.h
-rw-r--r-- 1 root root   758 Jul 23  2015 forwards.h
-rw-r--r-- 1 root root   420 Jul 23  2015 json.h
-rw-r--r-- 1 root root 11482 Jul 23  2015 reader.h
-rw-r--r-- 1 root root 26101 Jul 23  2015 value.h
-rw-r--r-- 1 root root   509 Jul 23  2015 version.h
-rw-r--r-- 1 root root 10298 Jul 23  2015 writer.h

在编译的时候要指明jsoncpp的路径,makefile文件要加上编译选项 -ljsoncpp

通过ldd查看可执行文件的链接

[yyq@VM-8-13-centos 2023_04_22_Calculator_TCPSocket]$ ldd Calserver
        linux-vdso.so.1 =>  (0x00007ffedadce000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fae9c761000)
        libjsoncpp.so.0 => /lib64/libjsoncpp.so.0 (0x00007fae9c52a000)
        libstdc++.so.6 => /home/yyq/.VimForCpp/vim/bundle/YCM.so/el7.x86_64/libstdc++.so.6 (0x00007fae9c1a9000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fae9bea7000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fae9bc91000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fae9b8c3000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fae9c97d000)

使用方法

1、包对应的头文件 #include <jsoncpp/json/json.h>

2、makefile文件要加上编译选项 -ljsoncpp

Json::Value root;//Value是个万能对象

序列化可以用两个对象 StyledWriterFastWriter,它们内部成员方法都叫做 write。转换出来的序列格式不同,FastWriter序列化得到的字符串更精简,没有多余的回车换行。

用例测试

#include <iostream>
#include <jsoncpp/json/json.h>

int main()
{
    int a = 10;
    int b = 20;
    char c = '+';
    // 封装格式化数据
    Json::Value root;
    root["num1"] = a;
    root["num2"] = b;
    root["op"] = c;
    // 序列化
    Json::StyledWriter Writer_style;
    std::string s_style = Writer_style.write(root);
    std::cout << "StyledWriter:\n" << s_style << std::endl;
    
    Json::FastWriter Writer_fast;
    std::string s_fast = Writer_fast.write(root);
    std::cout  << "FastWriter:\n" << s_fast << std::endl;
    return 0;
}

输出为

[yyq@VM-8-13-centos 2023_04_24_jSON]$ ./testjson 
StyledWriter:
{
   "num1" : 10,
   "num2" : 20,
   "op" : 43
}

FastWriter:
{"num1":10,"num2":20,"op":43}

序列化

Json::FastWriter / Json::StyledWriter中的 write 方法

反序列化

Json::Reader 中的 parse 方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值