gpt4 book ai didi

c++ - JSONCPP 附加到文件

转载 作者:行者123 更新时间:2023-11-28 04:23:12 28 4
gpt4 key购买 nike

我正在使用 JSONCPP 记录我在服务器上收到的消息,但它没有附加消息,而是替换了最后一条消息。这是我的代码:ofstream 和 event 是私有(private)成员。

  //std::ofstream myfile;
m_file.open ("messageLogs.json");
//Json::Value event;
Json::Value array(Json::arrayValue);
array.append(Json::Value(1));
array.append(Json::Value(1));

m_event["messages"]["time"] = "19:22";
m_event["messages"]["message"] = msg;

//populate object with objects
Json::StyledWriter writer;
m_file << writer.write(m_event) << std::endl;
m_file.close();

最佳答案

您可以将文件加载为 Json::Value 对象,并将其附加到那里。请注意,此代码片段要求 json 将数组作为文件中的顶级项目,例如:

messageLogs.json

[]

main.cpp

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

int main(int argc, char* argv[])
{
std::fstream m_file;
m_file.open ("messageLogs.json", std::ios::in);

Json::Reader reader;
Json::Value json_obj;

if(!reader.parse(m_file, json_obj, true))
{
// json file must contain an array
std::cerr << "could not parse the json file" << std::endl;
return -1;
}

m_file.close();

Json::Value m_event;
m_event["messages"]["time"] = "19:22";
m_event["messages"]["message"] = "Some message";//msg;

// append to json object
json_obj.append(m_event);

std::cout << json_obj.toStyledString() << std::endl;

// write updated json object to file
m_file.open("messageLogs.json", std::ios::out);
m_file << json_obj.toStyledString() << std::endl;
m_file.close();

return 0;
}

关于c++ - JSONCPP 附加到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990260/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com