内容目录
背景
自己用jsoncpp已经几年了,一直都用 toStyledString来转换字符串,但这种格式化字符串,但如果用来传递数据,那么有许多多余数据,所以我一直想找到压缩的字符串,网上找了一些关键词基本都没有找到,突然有一天我直接看一下jsoncpp的源代码。
过程
- 查看toStyledString 代码
std::string Value::toStyledString() const { StyledWriter writer; return writer.write( *this ); }
题外话:用vscode看代码还是蛮舒服的
jsoncpp 定义styledWriter ,然后我发现他有一个FastWriter
class JSON_API FastWriter : public Writer
{
public:
FastWriter();
virtual ~FastWriter(){}
void enableYAMLCompatibility();
public:
virtual std::string write( const Value &root );
private:
void writeValue( const Value &value );
std::string document_;
bool yamlCompatiblityEnabled_;
};
然后看了一下write就是我想要的压缩的字符串。
## 使用
Json::Value root;
root["id"] = "test";
root["name"] = "fish";
FastWriter fast_writer;
std::string result = fast_writer.write(root);
## 总结
jsoncpp 我用几年前的老版本,看github 貌似重写了,不过目前自己够用,新不代表就好。。
jsoncpp 我的用版本不支持 uint_64,我只能用std::string 来代替