diff --git a/src/common/json.cc b/src/common/json.cc index de9a89f78..21be2a5bc 100644 --- a/src/common/json.cc +++ b/src/common/json.cc @@ -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(); diff --git a/tests/cpp/common/test_json.cc b/tests/cpp/common/test_json.cc index d361552ce..155cf04ad 100644 --- a/tests/cpp/common/test_json.cc +++ b/tests/cpp/common/test_json.cc @@ -677,6 +677,21 @@ TEST(UBJson, Basic) { ASSERT_FLOAT_EQ(3.14, get(get(ret["test"])[1])); ASSERT_FLOAT_EQ(2.71, get(get(ret["test"])[0])); } + { + // boolean + Json boolean{Object{}}; + boolean["foo"] = Boolean{false}; + std::vector 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) {