自定义数据结构想转成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() c