更快的JsonCpp替代,允许复制/可变的Json对象? [英] Faster JsonCpp alternative that allows copying/mutability of Json objects?

查看:481
本文介绍了更快的JsonCpp替代,允许复制/可变的Json对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

JsonCpp很慢。



有更快,更清洁和更支持的东西,如:



<$> p $ p> 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; //这是您从解析等获得的基础文档
rapidjson :: Value& v = doc [newMember]; // newMember = 100

assert(v.GetInt()== 100);

rapidjson :: Document copy;
doc.Accept(copy); //接受机制与分析中使用的相同,但是用于复制

assert(copy [newMember]。GetInt()== doc [newMember]。GetInt())

显式复制有一个优点:它强制您清楚地考虑何时使用引用或可能不必要


JsonCpp is slow. And the code is pretty messy.

Is there any alternative that is faster, cleaner and supports stuff like:

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 supports code like the one above.

I've tried rapidjson, which is very fast, but unfortunately it does not support copying Json values.

Any alternative? Bonus point for benchmarks.

解决方案

After searching for some time the "documentation" I finally found a good way to copy JSON objects with rapidjson wich is very convenient:

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())

The explicit copying has one advantage: It forces you to think clearly about when you are using references or potentially unnecessary copies.

这篇关于更快的JsonCpp替代,允许复制/可变的Json对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆