我用C++编写了一段代码,使用JsonCpp库生成一个.json
文件。我的问题是我很难维护文件中代码序列中出现的显示顺序。目前,显示顺序是字母顺序,与所需顺序不匹配。为了解决这个问题并保持所需的顺序,我想知道JsonCpp库中是否有一个解决方案,或者我应该考虑的替代方法或库?!
#include <iostream>
#include <fstream>
#include <jsoncpp/json/json.h>
#include <memory>
int main() {
// Créer un objet Json::Value pour stocker les données
Json::Value jsonData;
// Enregistrement 1
Json::Value enreg1;
enreg1["CAT"] = "4";
enreg1["Long"] = "19";
enreg1["Day"] = "0";
enreg1["Time"] = "13:15:37:86";
enreg1["Fspec"] = "fa12gh";
Json::Value Item1;
Item1["AI"] = "1a";
Item1["CC"] = "23";
enreg1["Item1"] = Item1;
// Ajouter Enreg_1 à l'objet JSON principal
jsonData["Enreg_1"] = enreg1;
// Ouvrir un fichier pour écrire le JSON
std::ofstream file("do.json");
if (file.is_open()) {
// Utiliser un Writer de JsonCpp pour écrire l'objet JSON dans le fichier
Json::StreamWriterBuilder builder;
std::unique_ptr<Json::StreamWriter> jsonWriter(builder.newStreamWriter());
// Écrire l'objet JSON dans le fichier
jsonWriter->write(jsonData, &file);
// Fermer le fichier
file.close();
std::cout << "Fichier JSON généré avec succès." << std::endl;
} else {
std::cerr << "Impossible d'ouvrir le fichier pour écrire." << std::endl;
return 1;
}
return 0;
}
字符串
我希望这样:
{
"Enreg_1" :
{
"CAT" : "4",
"Long" : "19",
"Day" : "0",
"Time" : "13:15:37:86",
"Fspec" : "fa12gh",
"Item1" :
{
"AI" : "1a",
"CC" : "23"
}
}
}
型
但我有这个代替(字母顺序):
{
"Enreg_1" :
{
"CAT" : "4",
"Day" : "0",
"Fspec" : "fa12gh",
"Item1" :
{
"AI" : "1a",
"CC" : "23"
},
"Long" : "19",
"Time" : "13:15:37:86"
}
}
型
1条答案
按热度按时间but5z9lq1#
正如您的问题的评论者所指出的,JsonCPP使用
std::map
来存储其对象成员。如果你切换到nlohmann::json,你可以覆盖对象的后备存储以保持插入顺序。甚至有一个预制类型供您用途:
字符串