revert trailing comma in old Reader (#1126)
diff --git a/include/json/json_features.h b/include/json/json_features.h
index a5b7305..7c7e9f5 100644
--- a/include/json/json_features.h
+++ b/include/json/json_features.h
@@ -23,7 +23,6 @@
/** \brief A configuration that allows all features and assumes all strings
* are UTF-8.
* - C & C++ comments are allowed
- * - Trailing commas in objects and arrays are allowed.
* - Root object can be any JSON value
* - Assumes Value strings are encoded in UTF-8
*/
@@ -32,7 +31,6 @@
/** \brief A configuration that is strictly compatible with the JSON
* specification.
* - Comments are forbidden.
- * - Trailing commas in objects and arrays are forbidden.
* - Root object must be either an array or an object value.
* - Assumes Value strings are encoded in UTF-8
*/
@@ -45,10 +43,6 @@
/// \c true if comments are allowed. Default: \c true.
bool allowComments_{true};
- /// \c true if trailing commas in objects and arrays are allowed. Default \c
- /// true.
- bool allowTrailingCommas_{true};
-
/// \c true if root must be either an array or an object value. Default: \c
/// false.
bool strictRoot_{false};
diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp
index 2c6fead..10be6d2 100644
--- a/src/lib_json/json_reader.cpp
+++ b/src/lib_json/json_reader.cpp
@@ -67,7 +67,6 @@
Features Features::strictMode() {
Features features;
features.allowComments_ = false;
- features.allowTrailingCommas_ = false;
features.strictRoot_ = true;
features.allowDroppedNullPlaceholders_ = false;
features.allowNumericKeys_ = false;
@@ -455,9 +454,7 @@
initialTokenOk = readToken(tokenName);
if (!initialTokenOk)
break;
- if (tokenName.type_ == tokenObjectEnd &&
- (name.empty() ||
- features_.allowTrailingCommas_)) // empty object or trailing comma
+ if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object
return true;
name.clear();
if (tokenName.type_ == tokenString) {
@@ -505,20 +502,15 @@
Value init(arrayValue);
currentValue().swapPayload(init);
currentValue().setOffsetStart(token.start_ - begin_);
+ skipSpaces();
+ if (current_ != end_ && *current_ == ']') // empty array
+ {
+ Token endArray;
+ readToken(endArray);
+ return true;
+ }
int index = 0;
for (;;) {
- skipSpaces();
- if (current_ != end_ && *current_ == ']' &&
- (index == 0 ||
- (features_.allowTrailingCommas_ &&
- !features_.allowDroppedNullPlaceholders_))) // empty array or trailing
- // comma
- {
- Token endArray;
- readToken(endArray);
- return true;
- }
-
Value& value = currentValue()[index++];
nodes_.push(&value);
bool ok = readValue();