2012-01-13 53 views
3

我使用json cpp http://jsoncpp.sourceforge.net解析json數據。我不需要了解數據,我只需要打印出一些屬性和它們的值。它以某種方式很難做到。首先,我需要知道該值的類型,然後獲取該值,然後再將其轉換爲字符串!有一個樣式化的作家,但我不想使用它,因爲它在最後附加了一些CRLF。如何獲取JsonCPP值作爲字符串?

我做這樣的事情

CJsonHelper::getUInt(Json::Value &root, std::string key){ 
    return root.get(key, 0-1).isInt() ? root.get(key, 0-1).asUInt() : 0-1; 
} 

難道我只寫一個函數來獲取所有隻是功能並不真正關心的類型等屬性?

+0

你爲什麼要使用'0-1'而不僅僅是'-1'? – 2012-01-13 06:50:50

+0

雅我可以只寫-1。 – Lalith 2012-01-13 07:07:08

回答

1

你可以簡單地創建你自己的作家,做任何你想要的。請查看StyledWriter的代碼。您不喜歡的CRLF來自StyledWriter::Write。你可以創建自己的沒有CRLF的作家類。

如果您不介意修改庫,請更改編寫器,以便像writeValue這樣的函數受保護而不是私有。然後,您可以從StyledWriter中派生自己的班級,使用不同的Write函數,並仍使用各種write*函數來完成轉換的詳細信息。

3

該項目已移至GitHub

爲了避免所有換行,請使用StreamWriterBuilder

Json::Value whatever = ...; 
Json::StreamWriterBuilder builder; 
builder.settings_["indentation"] = ""; 
std::string out = Json::writeString(builder, whatever);