json的使用(python寫,c++讀)

天才da熊貓發表於2020-11-06

準備用json存一個網路結構,每個網路包含各個層的資訊,如卷積層,池化層等。最初的打算是通過這樣的方式寫:

json_file = open("json.json","w")
conv_dict = {
    "type":"conv"
}
input_dict = {
    "type":"input"
}
output_dict = {
    "type":"output"
}
json.dump(input_dict,json_file,indent=4);
json_file.write("\n");
json.dump(conv_dict,json_file,indent=4);
json_file.write("\n");
json.dump(output_dict,json_file,indent=4);
json_file.write("\n");
json_file.close()

C++端進行讀操作(通過json/json.h):參考連結

std::fstream f;
f.open("json.json", std::ios::in);
Json::CharReaderBuilder rbuilder;
std::string err_string;
Json::Value json;
bool suc = Json::parseFromStream(rbuilder, f, &json, &err_string);
int size = json.size();

 列印的json size為1。很奇怪,明明有三個dict,怎麼能是1呢?原來parseFromStream只把input_dict解析了,這個json檔案只有input_dict的內容:

Json::Value tmp = json["type"];
std::string st = tmp.asString();
printf("tmp = %s\n", st.data());

 如何將三個dict全部放入json呢?只需要把這三個dict寫成一個list,再通過json.dump就可以了:

json_file = open("json.json","w")
conv_dict = {
    "type":"conv"
}
input_dict = {
    "type":"input"
}
output_dict = {
    "type":"output"
}
tmp_list = []
tmp_list.append(input_dict)
tmp_list.append(conv_dict)
tmp_list.append(output_dict)
json.dump(tmp_list,json_file,indent=4);
json_file.close()

 

 

相關文章