色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

boost解析json 換行

阮建安2年前9瀏覽0評論

JSON是一種廣泛應(yīng)用于前后端數(shù)據(jù)傳輸?shù)臄?shù)據(jù)格式,而Boost庫是一個功能豐富的C++庫,其中包括了解析和生成JSON數(shù)據(jù)的工具,而這里我們主要談一下其中一些與換行相關(guān)的問題。

boost::property_tree::ptree pt;
std::stringstream ss;
ss<< "{\"name\":\"John Doe\",\"age\":35,\"address\":{\"street\":\"Doe Street\",\"city\":\"New York\",\"state\":\"New York\"}}";
std::string json = ss.str();
std::istringstream input(json);
boost::property_tree::read_json(input, pt);
std::string name = pt.get("name");
std::string address = pt.get("address.street") + "\n" + pt.get("address.city") + ", " + pt.get("address.state");

代碼中的ptree是Boost的一個模板類,提供了一種樹型的數(shù)據(jù)結(jié)構(gòu),可以存儲任意類型的數(shù)據(jù),輸入的JSON數(shù)據(jù)也會被轉(zhuǎn)換為一個ptree對象。其中比較有用的是get函數(shù),可以通過鍵名獲取ptree中對應(yīng)的值。對于換行,可以直接用\n字符即可。

但是,在將ptree對象轉(zhuǎn)換為JSON字符串輸出時,我們會發(fā)現(xiàn)這個字符并沒有起作用:

std::ostringstream output;
boost::property_tree::write_json(output, pt);
std::string new_json = output.str();

輸出的結(jié)果是一個沒有換行符的字符串。原因在于,boost::property_tree::write_json函數(shù)默認(rèn)會將所有的空格和換行都忽略掉,只輸出最簡潔的JSON字符串,而想要保留這些字符,需要借助write_json函數(shù)的一個參數(shù):

boost::property_tree::write_json(output, pt, false, true);

第三個參數(shù)表示是否在輸出時加上空格,第四個參數(shù)表示是否在輸出時加上換行。按照要求傳遞參數(shù)后,輸出的JSON字符串中就會包含\n字符了。