jsoncpp json压缩转换字符串写法

背景

自己用jsoncpp已经几年了,一直都用 toStyledString来转换字符串,但这种格式化字符串,但如果用来传递数据,那么有许多多余数据,所以我一直想找到压缩的字符串,网上找了一些关键词基本都没有找到,突然有一天我直接看一下jsoncpp的源代码。

过程

  1. 查看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 来代替