Вопрос

Я анализирую данные JSON, используя Jsoncpp. Анкет Мне действительно не нужно понимать данные, мне просто нужно распечатать некоторые свойства и их ценности. Это как -то сложно сделать. Сначала мне нужно знать, какой тип значения, а затем получить значение, а затем снова преобразовать его в строку! Есть стильный писатель, но я не хочу использовать его, поскольку он добавляет немного CRLF в конце.

Я делаю что -то подобное

CJsonHelper::getUInt(Json::Value &root, std::string key){
    return root.get(key, 0-1).isInt() ? root.get(key, 0-1).asUInt() : 0-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.

Другие советы

Проект перешел на GitHub.

Чтобы избежать всех конфискочек линии, используйте StreamhriterBuilder:

Json::Value whatever = ...;
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::string out = Json::writeString(builder, whatever);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top