Skip to content

Commit c512bf6

Browse files
committed
Merge pull request opencv#9232 from dkurt:json_named_nodes
2 parents bcff9fd + 3515f6e commit c512bf6

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

modules/core/src/persistence.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3781,6 +3781,7 @@ static char* icvJSONParseMap( CvFileStorage* fs, char* ptr, CvFileNode* node )
37813781
ptr = icvJSONParseMap( fs, ptr, child );
37823782
else
37833783
ptr = icvJSONParseValue( fs, ptr, child );
3784+
child->tag |= CV_NODE_NAMED;
37843785
}
37853786
}
37863787

modules/core/test/test_io.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1292,3 +1292,29 @@ TEST(Core_InputOutput, FileStorage_format_yml_gz)
12921292
fs.open("opencv_storage.yml.gz", FileStorage::WRITE | FileStorage::MEMORY);
12931293
EXPECT_EQ(FileStorage::FORMAT_YAML, fs.getFormat());
12941294
}
1295+
1296+
TEST(Core_InputOutput, FileStorage_json_named_nodes)
1297+
{
1298+
std::string test =
1299+
"{ "
1300+
"\"int_value\": -324,"
1301+
"\"map_value\": {"
1302+
"\"str_value\": \"mystring\""
1303+
"},"
1304+
"\"array\": [0.2, 0.1]"
1305+
"}";
1306+
FileStorage fs(test, FileStorage::READ | FileStorage::MEMORY);
1307+
1308+
ASSERT_TRUE(fs["int_value"].isNamed());
1309+
ASSERT_TRUE(fs["map_value"].isNamed());
1310+
ASSERT_TRUE(fs["map_value"]["str_value"].isNamed());
1311+
ASSERT_TRUE(fs["array"].isNamed());
1312+
ASSERT_FALSE(fs["array"][0].isNamed());
1313+
ASSERT_FALSE(fs["array"][1].isNamed());
1314+
1315+
ASSERT_EQ(fs["int_value"].name(), "int_value");
1316+
ASSERT_EQ(fs["map_value"].name(), "map_value");
1317+
ASSERT_EQ(fs["map_value"]["str_value"].name(), "str_value");
1318+
ASSERT_EQ(fs["array"].name(), "array");
1319+
fs.release();
1320+
}

0 commit comments

Comments
 (0)