ubuntu环境下 安装jsoncpp

jsoncpp的认识

json 是一种数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。

例如:小明同学的学生信息

char name = "小明";
int age = 18;
float score[3] = {88.5, 99, 58};
则json这种数据交换格式是将这多种数据对象组织成为一个字符串:
[
   {
        "姓名" : "小明",
        "年龄" : 18,
        "成绩" : [88.5, 99, 58]
   },
   {
        "姓名" : "小黑",
        "年龄" : 18,
        "成绩" : [88.5, 99, 58]
   }
]

json 数据类型:对象,数组,字符串,数字

对象:使用花括号 {} 括起来的表示一个对象。

数组:使用中括号 [] 括起来的表示一个数组。

字符串:使用常规双引号 "" 括起来的表示一个字符串

数字:包括整形和浮点型,直接使用。 

安装jsoncpp 

#更新源
sudo apt-get update
#安装
sudo apt-get install libjsoncpp-dev
 

 如何检查是否成功安装了jsoncpp库。

ls /usr/include/jsoncpp/json/

 

jsoncpp 库用于实现 json 格式的序列化和反序列化,完成将多个数据对象组织成为 json 格式字符串,以及将 json 格式字符串解析得到多个数据对象的功能。 这其中主要借助三个类以及其对应的少量成员函数完成:

jsoncpp库简单使用:

//Json数据对象类
class Json::Value{
    Value &operator=(const Value &other); //Value重载了[]和=,因此所有的赋值和获取数据都可以通过
    Value& operator[](const std::string& key);//简单的方式完成 val["姓名"] = "小明";
    Value& operator[](const char* key);
    Value removeMember(const char* key);//移除元素
    const Value& operator[](ArrayIndex index) const; //val["成绩"][0]
    Value& append(const Value& value);//添加数组元素val["成绩"].append(88); 
    ArrayIndex size() const;//获取数组元素个数 val["成绩"].size();
    std::string asString() const;//转string string name = val["name"].asString();
    const char* asCString() const;//转char*   char *name = val["name"].asCString();
    Int asInt() const;//转int int age = val["age"].asInt();
    float asFloat() const;//转float
    bool asBool() const;//转 bool
};
//json序列化类,低版本用这个更简单
class JSON_API Writer {
  virtual std::string write(const Value& root) = 0;
}
class JSON_API FastWriter : public Writer {
  virtual std::string write(const Value& root);13. 第三方库认识- jsoncpp 实现序列化 
 
}
class JSON_API StyledWriter : public Writer {
  virtual std::string write(const Value& root);
}
//json序列化类,高版本推荐,如果用低版本的接口可能会有警告
class JSON_API StreamWriter {
    virtual int write(Value const& root, std::ostream* sout) = 0;
}
class JSON_API StreamWriterBuilder : public StreamWriter::Factory {
    virtual StreamWriter* newStreamWriter() const;
}
//json反序列化类,低版本用起来更简单
class JSON_API Reader {
 bool parse(const std::string& document, Value& root, bool collectComments = true);
}
//json反序列化类,高版本更推荐
class JSON_API CharReader {
    virtual bool parse(char const* beginDoc, char const* endDoc, 
                       Value* root, std::string* errs) = 0;
}
class JSON_API CharReaderBuilder : public CharReader::Factory {
    virtual CharReader* newCharReader() const;
}

第三方库认识- jsoncpp 实现序列化

int main()
{
    const char *name = "小明";
    int age = 18;
    float score[] = {88.5, 98, 58};
    Json::Value val;
    val["姓名"] = name;
    val["年龄"] = age;
    val["成绩"].append(score[0]);
    val["成绩"].append(score[1]);
    val["成绩"].append(score[2]);
    
    Json::StreamWriterBuilder swb;
    std::unique_ptr<Json::StreamWriter> sw(swb.newStreamWriter());
    std::ostringstream os;
    sw->write(val, &os);
    std::string str = os.str();
    std::cout << str <<std::endl;
    return 0;
}

 

g++ json_example1.cpp -o json_example1 -ljsoncpp

 第三方库认识- jsoncpp 实现反序列化

int main()
{
    std::string str = R"({"姓名":"小明", "年龄":18, "成绩":[76.5, 55, 88]})";
    Json::Value root;
    Json::CharReaderBuilder crb;
    std::unique_ptr<Json::CharReader> cr(crb.newCharReader());
    std::string err;
    cr->parse(str.c_str(), str.c_str() + str.size(), &root, &err);
    
    std::cout << root["姓名"].asString() << std::endl;
    std::cout << root["年龄"].asInt() << std::endl;
    int sz = root["成绩"].size();
    for (int i = 0; i < sz; i++) {
   std::cout << root["成绩"][i].asFloat() << std::endl;
   }
    for (auto it = root["成绩"].begin(); it != root["成绩"].end(); it++){
   std::cout << it->asFloat() << std::endl;
   }
    return 0;
}
g++ json_example2.cpp -o json_example2 -ljsoncpp

 

 

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
要在Ubuntu安装jsoncpp,您可以按照以下步骤进行操作: 1. 首先,打开终端并确保您的系统已更新。您可以使用以下命令更新软件包列表: ``` sudo apt update ``` 2. 安装CMake,C++编译器和其他必要的构建工具。可以使用以下命令进行安装: ``` sudo apt install cmake g++ build-essential ``` 3. 创建一个用于构建的目录,并进入该目录: ``` mkdir jsoncpp-build cd jsoncpp-build ``` 4. 使用Git从jsoncpp存储库中克隆源代码。如果您没有安装Git,可以使用以下命令安装: ``` sudo apt install git ``` 然后,使用以下命令克隆jsoncpp存储库: ``` git clone https://github.com/open-source-parsers/jsoncpp.git ``` 5. 进入jsoncpp目录: ``` cd jsoncpp ``` 6. 使用CMake配置构建过程: ``` cmake . ``` 7. 使用make命令构建jsoncpp库: ``` make ``` 8. 安装jsoncpp库: ``` sudo make install ``` 完成上述步骤后,jsoncpp库将成功安装在您的Ubuntu系统上。您可以在自己的项目中使用该库来处理JSON数据。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [Ubuntu系统安装jsoncpp](https://blog.csdn.net/Happy__gai/article/details/125977421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挣扎的泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值