日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

使用C/C++解析json文件

發布時間:2025/3/15 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用C/C++解析json文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 為什么?
  • 怎么做?


為什么?

? ? ? ?舉個例子,我們在使用C/C++進行深度學習模型的測試,由于測試過程中可能有許多參數要傳給model,比如在進行目標檢測時,要傳入nms閾值等。我們要最優化測試結果,這類參數需要不斷的調整,如果我們把這類參數的值寫在C/C++代碼中,每次修改都要重新進行make,這樣十分麻煩。
? ? ? ?我們可以將這些參數寫在一個json文件中,在C/C++代碼中解析json文件,讀取出參數。這樣,我們每次修改參數的值,不需要重新進行make,省時省力。

怎么做?

  • 安裝jsoncpp
sudo apt-get install libjsoncpp-dev

? ? ? ?安裝后,頭文件在“/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文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。