diff --git a/include/json/value.h b/include/json/value.h index 5f6544329..8df221cfc 100644 --- a/include/json/value.h +++ b/include/json/value.h @@ -650,7 +650,8 @@ class JSON_API Value { /// Include delimiters and embedded newlines. String getComment(CommentPlacement placement) const; - String toStyledString() const; + String toStyledString(const StreamWriterBuilder& builder = StreamWriterBuilder()) const; + String toStyledString(int precision, PrecisionType precisionType = PrecisionType::decimalPlaces) const; const_iterator begin() const; const_iterator end() const; diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp index a875d28b2..171798fbd 100644 --- a/src/lib_json/json_value.cpp +++ b/src/lib_json/json_value.cpp @@ -1559,16 +1559,20 @@ ptrdiff_t Value::getOffsetStart() const { return start_; } ptrdiff_t Value::getOffsetLimit() const { return limit_; } -String Value::toStyledString() const { - StreamWriterBuilder builder; - +String Value::toStyledString(const StreamWriterBuilder& builder) const { String out = this->hasComment(commentBefore) ? "\n" : ""; out += Json::writeString(builder, *this); out += '\n'; - return out; } +String Value::toStyledString(int precision, PrecisionType precisionType) const { + StreamWriterBuilder builder; + precisionType == PrecisionType::significantDigits?builder.settings_["precisionType"] = "significant":builder.settings_["precisionType"] = "decimal"; + builder.settings_["precision"] = std::min(precision, 17); + return toStyledString(builder); +} + Value::const_iterator Value::begin() const { switch (type()) { case arrayValue: