How to get JsonCPP values as strings?

风格不统一 提交于 2019-12-01 21:00:49

问题


I am parsing json data using JsonCpp. I don't really need to understand the data, i just need to print out some properties and their values out. It somehow is hard to do. First I need to know what type the value is and then get the value and then convert it to string again! There is a styled writer but I don't want to use it as it appends some CRLF at the end.

I do something like this

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

Could I just write a single function to get all the properties with just that function which doesn't really care about the types etc?


回答1:


You can trivially create your own writer that does whatever you want. Have look at the code for StyledWriter. The CRLF's you don't like come from StyledWriter::Write. You can create your own writer class that doesn't have those CRLF's.

If you don't mind modifying the library, change the writer so that functions like writeValue are protected rather than private. Then you can derive your own class from StyledWriter with a different Write function and still use the various write* functions to do the details of the conversion.




回答2:


The project has moved to GitHub.

To avoid all linefeeds, use a StreamWriterBuilder:

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


来源:https://stackoverflow.com/questions/8844856/how-to-get-jsoncpp-values-as-strings

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!