Fix UBJSON with boolean value. (#10054)

This commit is contained in:
Jiaming Yuan 2024-02-20 22:13:51 +08:00 committed by GitHub
parent 6e3c899ba7
commit d37b83e8d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 1 deletions

View File

@ -791,7 +791,7 @@ Json UBJReader::Parse() {
return Json{JsonBoolean{true}};
}
case 'F': {
return Json{JsonBoolean{true}};
return Json{JsonBoolean{false}};
}
case 'd': {
auto v = this->ReadPrimitive<float>();

View File

@ -677,6 +677,21 @@ TEST(UBJson, Basic) {
ASSERT_FLOAT_EQ(3.14, get<Number>(get<Array>(ret["test"])[1]));
ASSERT_FLOAT_EQ(2.71, get<Number>(get<Array>(ret["test"])[0]));
}
{
// boolean
Json boolean{Object{}};
boolean["foo"] = Boolean{false};
std::vector<char> out;
Json::Dump(boolean, &out, std::ios::binary);
auto loaded = Json::Load(StringView{out.data(), out.size()}, std::ios::binary);
ASSERT_EQ(boolean, loaded);
boolean["foo"] = Boolean{true};
Json::Dump(boolean, &out, std::ios::binary);
loaded = Json::Load(StringView{out.data(), out.size()}, std::ios::binary);
ASSERT_EQ(boolean, loaded);
}
}
TEST(Json, TypeCheck) {