mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-29 03:20:02 +00:00
This commit is contained in:
@@ -3720,6 +3720,14 @@ bool StructDef::Deserialize(Parser &parser, const reflection::Object *object) {
|
|||||||
delete field_def;
|
delete field_def;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (field_def->key) {
|
||||||
|
if (has_key) {
|
||||||
|
// only one field may be set as key
|
||||||
|
delete field_def;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
has_key = true;
|
||||||
|
}
|
||||||
if (fixed) {
|
if (fixed) {
|
||||||
// Recompute padding since that's currently not serialized.
|
// Recompute padding since that's currently not serialized.
|
||||||
auto size = InlineSize(field_def->value.type);
|
auto size = InlineSize(field_def->value.type);
|
||||||
|
|||||||
@@ -4550,6 +4550,28 @@ void PrivateAnnotationsLeaks() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JsonUnsortedArrayTest()
|
||||||
|
{
|
||||||
|
flatbuffers::Parser parser;
|
||||||
|
TEST_EQ(parser.Deserialize(MyGame::Example::MonsterBinarySchema::data(), MyGame::Example::MonsterBinarySchema::size()), true);
|
||||||
|
auto jsonStr = R"(
|
||||||
|
{
|
||||||
|
"name": "lookupTest",
|
||||||
|
"testarrayoftables": [
|
||||||
|
{ "name": "aaa" },
|
||||||
|
{ "name": "ccc" },
|
||||||
|
{ "name": "bbb" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
TEST_EQ(parser.ParseJson(jsonStr), true);
|
||||||
|
auto monster = flatbuffers::GetRoot<MyGame::Example::Monster>(parser.builder_.GetBufferPointer());
|
||||||
|
|
||||||
|
TEST_NOTNULL(monster->testarrayoftables()->LookupByKey("aaa"));
|
||||||
|
TEST_NOTNULL(monster->testarrayoftables()->LookupByKey("bbb"));
|
||||||
|
TEST_NOTNULL(monster->testarrayoftables()->LookupByKey("ccc"));
|
||||||
|
}
|
||||||
|
|
||||||
int FlatBufferTests() {
|
int FlatBufferTests() {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
|
||||||
@@ -4655,6 +4677,7 @@ int FlatBufferTests() {
|
|||||||
WarningsAsErrorsTest();
|
WarningsAsErrorsTest();
|
||||||
NestedVerifierTest();
|
NestedVerifierTest();
|
||||||
PrivateAnnotationsLeaks();
|
PrivateAnnotationsLeaks();
|
||||||
|
JsonUnsortedArrayTest();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user