自定义数据结构想转成Json string输出,又不想引入rapidJson,就自己实现一个吧。
Caveats (TODO)
- 目前不支持数字类型的value
- 只提供ToString()方法,具生成的json string没有格式化
- 接口提供不太友好,使用繁琐
代码
in c++11
#include <algorithm>
#include <iostream>
#include <list>
#include <memory>
#include <string>
#include <sstream>
#include <unordered_set>
enum JsonValueType {
JT_OBJ,
JT_ARY,
JT_VAL
};
struct JsonValue {
JsonValue(JsonValueType t) : type(t) { }
JsonValueType type;
virtual std::string ToString() const = 0;
};
struct JsonPair {
JsonPair() : key() { }
JsonPair(JsonPair &&ojp) {
key.swap(ojp.key);
value.swap(ojp.value);
}
JsonPair &operator=(JsonPair &ojp) {
key.swap(ojp.key);
value.swap(ojp.value);
return *this;
}
void SetValue(JsonValue *v) { value.reset(v);}
std::string ToString() const {
std::stringstream ss;
ss << "\"

这篇博客介绍了如何在不使用第三方库如rapidJson的情况下,利用C++11特性自定义实现一个简单的Json字符串生成工具。虽然目前该工具存在一些限制,如不支持数字类型value、未格式化的输出以及接口不够友好,但可以作为一个基础的Json转换解决方案。
最低0.47元/天 解锁文章
661

被折叠的 条评论
为什么被折叠?



