Skip to content

Leopard-C/jsoncpp

Repository files navigation

1. 关于jsoncpp

本项目修改自 open-source-parsers/jsoncpp,版本号1.9.5

主要是为了更好的支持UTF8字符的显示。

2. 修改内容

  • Json::Value类,修改toStyledString()函数签名,新增参数settings
String toStyledString(const Json::Value& settings = Json::nullValue) const;
  • Json::StreamWriterBuilder类,新增setSettings()方法,函数签名如下。
void setSettings(const Json::Value& setting);
  • Json::FastWriter类,新增dropNullKeyValues_emitUTF8_两个私有属性,以及对应的dropNullKeyValues()emitUTF8()方法。

    • dropNullKeyValues: 如果某个key对应的valuenull,序列化为字符串时忽略该键值。

      // JSON对象
      {
          "age": 12,
          "name": "Tom",
          "data": null
      }
      
      // 输出字符串
      // data属性被移除
      {"age":12,"name":"Tom"}
    • emitUTF8: 启用UTF8编码。

      // 不启用
      {"name":"\u7f16\u7a0b","score":98}
      
      // 启用
      {"name":"编程","score":98}

3. 示例

example/main.cpp源文件。

4.1 编译(Linux平台)

# x86_64
make

# arm64(交叉编译)
make CXX=aarch64-linux-gnu-g++ AR=aarch64-linux-gnu-ar ARCH=aarch64

输出如下文件

  • lib/linux/libjsonccp.a: 静态库文件
  • example.out: 示例程序。(运行方式:./example.out)

4.2 编译(Windows平台)

打开win-vsproj/jsoncpp.sln项目,编译即可。

输出如下文件

  • lib/windows/$(Platform)/$(Configuration)/jsoncpp.lib: 静态库文件
  • example.exe: 示例程序。