JsonCpp работает медленно. И код довольно грязный.
Есть ли альтернатива, которая быстрее, чище и поддерживает такие вещи, как:
Json::Value val, copy;
val["newMember"] = 100;
val["newMember2"] = "hello";
copy = val;
val["newMember2"] = "bye";
assert(val["newMember"] == copy["newMember"]);
assert(val["newMember2"] != copy["newMember2"]);
JsonCpp поддерживает код, подобный приведенному выше.
я пробовал rapidjson, который очень быстрый, но, к сожалению, он не поддерживает копирование значений Json.
Любая альтернатива? Бонусный балл за ориентиры.
После поиска в течение некоторого времени «документации» я наконец нашел хороший способ копировать объекты JSON с rapidjson, который очень удобен:
rapidjson::Document doc; // This is the base document that you got from parsing etc
rapidjson::Value& v = doc["newMember"]; // newMember = 100
assert(v.GetInt() == 100);
rapidjson::Document copy;
doc.Accept(copy); // The accept meachnism is the same as used in parsing, but for copying
assert(copy["newMember"].GetInt() == doc["newMember"].GetInt())
Явное копирование имеет одно преимущество: оно заставляет вас думать о том, когда вы используете ссылки или потенциально ненужные копии.
Других решений пока нет …