JSON for Modern C++發布3.1版本
JSON for Modern C++ 3.1版本增加了對Universal Binary JSON(UBJSON)規範和JSON合并補丁(Merge Patch)的支援。
UBJSON是支援Modern C++幾種格式之一,它可以減少編碼值的大小,加快解碼速度。除了UBJSON,CBOR和MessagePack也同樣支援Modern C++。 每種格式都有不同的優勢,選擇哪種格式取決於你所需要的資料類型。在這三種格式中,UBJSON是唯一完整二進位格式的,這就意味著所有的JSON值都可以轉換成UBJSON,並且所有的UBJSON值也都能轉換成JSON。
JSON合并補丁格式的作用是聲明兩個JSON文檔之間的差異。這種格式是與HTTP PATCH一起使用的,它能夠對資源進行部分更新,而HTTP PUT則用於對資源進行完全替換。JSON合并補丁允許你只對JSON的一部分進行定義,並且將其合并到伺服器端。這比使用基本的JSON補丁格式更加方便,基本的JSON補丁格式依賴於一組操作的規範來對原始的JSON文檔進行修補。例如:
// a JSON valuejson j_document = R"({ "a": "b", "c": { "d": "e", "f": "g" }})"_json;// a JSON patch (RFC 6902)json j_patch_1 = R"([ { "op": "replace", "path": "/a", "value": "z" }, { "op": "remove", "path": "/f"}])"_json;// a JSON Merge patch (RFC 7386)json j_patch_2 = R"({ "a":"z", "c": { "f": null }})"_json;
JSON for Modern C++庫旨在提供一種直觀的文法來對JSON資料進行處理,就好像該JSON資料是頭等(first-class)資料類型一樣。例如,你能通過以下語句來對一個對象進行初始化:
json j2 = { {"pi", 3.141}, {"happy", true}, {"name", "Niels"}, {"nothing", nullptr}, {"answer", { {"everything", 42} }}, {"list", {1, 0, 2}}, {"object", { {"currency", "USD"}, {"value", 42.99} }}}
同樣地,你可以通過將__json
附加至json代碼後邊來對JSON代碼進行解碼:
auto j2 = R"( { "happy": true, "pi": 3.141 })"_json;
JSON for Modern C++另外的優點是易於整合,這要歸功於它可以被封裝於一個單獨的標頭檔json.hpp
中,而不需要任何外部庫或依賴項。除此之外,它還聲稱能夠通過100%的代碼覆蓋單元測試,並且不存在記憶體流失。
查看英文原文:JSON for Modern C++ Reaches Version 3.1
本文永久更新連結地址:https://www.bkjia.com/Linux/2018-02/150999.htm