\section _example Code example
\code
-Json::Value root; // will contain the root value after parsing.
-Json::Reader reader;
-bool parsingSuccessful = reader.parse( config_doc, root );
-if ( !parsingSuccessful )
-{
- // report to the user the failure and their locations in the document.
- std::cout << "Failed to parse configuration\n"
- << reader.getFormattedErrorMessages();
- return;
-}
+Json::Value root; // 'root' will contain the root value after parsing.
+std::cin >> root; // Or see CharReaderBuilder.
// Get the value of the member of root named 'encoding', return 'UTF-8' if there is no
// such member.
root["indent"]["use_space"] = getCurrentIndentUseSpace();
// (NEW IN 1.4.0)
-// To write into a steam with minimal memory overhead,
+// To write into a stream with minimal memory overhead,
// create a Builder for a StreamWriter.
Json::StreamWriterBuilder builder;
builder.indentation_ = " "; // or whatever you like
}; // Factory
}; // CharReader
+/** \brief Build a CharReader implementation.
+
+Usage:
+\code
+ using namespace Json;
+ CharReaderBuilder builder;
+ builder.collectComments_ = true;
+ std::shared_ptr<CharReader> reader(
+ builder.newCharReader());
+ Value value;
+ std::string errs;
+ bool ok = parseFromStream(std::cin, &value, &errs);
+\endcode
+*/
class CharReaderBuilder : public CharReader::Factory {
+public:
bool collectComments_;
Features features_;
-public:
- CharReaderBuilder();
-
- CharReaderBuilder& withCollectComments(bool v) {
- collectComments_ = v;
- return *this;
- }
- CharReaderBuilder& withFeatures(Features const& v) {
- features_ = v;
- return *this;
- }
+ CharReaderBuilder();
+ virtual ~CharReaderBuilder();
virtual CharReader* newCharReader() const;
};
std::string indentation_;
StreamWriterBuilder();
+ virtual ~StreamWriterBuilder();
/// Do not take ownership of sout, but maintain a reference.
- StreamWriter* newStreamWriter(std::ostream* sout) const;
+ virtual StreamWriter* newStreamWriter(std::ostream* sout) const;
};
/** \brief Build a StreamWriter implementation.
: collectComments_(true)
, features_(Features::all())
{}
+CharReaderBuilder::~CharReaderBuilder()
+{}
CharReader* CharReaderBuilder::newCharReader() const
{
return new OldReader(collectComments_, features_);
: cs_(StreamWriter::CommentStyle::All)
, indentation_("\t")
{}
+StreamWriterBuilder::~StreamWriterBuilder()
+{}
StreamWriter* StreamWriterBuilder::newStreamWriter(std::ostream* stream) const
{
std::string colonSymbol = " : ";