使用C/C++解析json文件
生活随笔
收集整理的這篇文章主要介紹了
使用C/C++解析json文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 為什么?
- 怎么做?
為什么?
? ? ? ?舉個例子,我們在使用C/C++進行深度學習模型的測試,由于測試過程中可能有許多參數要傳給model,比如在進行目標檢測時,要傳入nms閾值等。我們要最優化測試結果,這類參數需要不斷的調整,如果我們把這類參數的值寫在C/C++代碼中,每次修改都要重新進行make,這樣十分麻煩。
? ? ? ?我們可以將這些參數寫在一個json文件中,在C/C++代碼中解析json文件,讀取出參數。這樣,我們每次修改參數的值,不需要重新進行make,省時省力。
怎么做?
- 安裝jsoncpp
? ? ? ?安裝后,頭文件在“/usr/include/jsoncpp/json"下,動態庫文件在"/usr/lib/x86_64-linux-gnu/libjsoncpp.so.1.7.2"
- 修改CMakeLists
? ? ? ?在CMakeLists中要加入jsoncpp的頭文件路徑和動態庫路徑。具體如下:
SET(JSONCPP_INCLUDE /usr/include/) SET(JSONCPP_LIBS /usr/lib/x86_64-linux-gnu/libjsoncpp.so.1.7.2)SET(INCLUDES_DIRS ${JSONCPP_INCLUDE}) SET(LIBS ${JSONCPP_LIBS})INCLUDE_DIRECTORIES(${INCLUDES_DIRS} LINK_LIBRARIES(${LIBS})? ? ? ?假設我們的json文件長這樣: {"model1": {"model_path": "../path1/path2/xxx.model","batch_size": 1,"nms_threshold": 0.8} }
? ? ? ?我們可以使用如下代碼讀出這三個參數的值:
#include <fstream> #include <sstream> #include <iostream> #include <jsoncpp/json/json.h>void parse_json() {std::string path = "../params.json";std::ifstream fin;fin.open(path, std::ios::binary);Json::Reader reader;Json::Value root;if(reader.parse(fin, root, false)){std::string model_path = root["model1"]["model_path"].asString();int batch_size = root["model1"]["batch_size"].asInt();float nms_threshold = root["model1"]["nms_threshold"].asFloat();} }總結
以上是生活随笔為你收集整理的使用C/C++解析json文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非常好用的一些软件和网站
- 下一篇: 计算机视觉 - 知识点总结(面试、笔试)