Skip to content

Commit

Permalink
[fix] json emitter: ensure quoting of scalars with leading 0
Browse files Browse the repository at this point in the history
re #291
  • Loading branch information
biojppm committed Aug 30, 2022
1 parent 6a0f6bc commit b5ac42a
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/c4/yml/emit.def.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -879,7 +879,7 @@ template<class Writer>
void Emitter<Writer>::_write_scalar_json(csubstr s, bool as_key, bool was_quoted)
{
// json only allows strings as keys
if(!as_key && !was_quoted && (s.is_number() || s == "true" || s == "null" || s == "false"))
if(!as_key && !was_quoted && ((s.is_number() && !s.begins_with('0')) || s == "true" || s == "null" || s == "false"))
{
this->Writer::_do_write(s);
}
Expand Down
8 changes: 8 additions & 0 deletions test/test_json.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,14 @@ broken_value: '0.30.2'
)");
}

TEST(emit_json, issue291)
{
Tree t = parse_in_arena("{}");
t["james"] = "045";
auto s = emitrs_json<std::string>(t);
EXPECT_EQ(s, "{\"james\": \"045\"}");
}

TEST(emit_json, issue292)
{
EXPECT_FALSE(csubstr("0.1.0").is_number());
Expand Down

0 comments on commit b5ac42a

Please sign in to comment.