Use either shape. A file is one or the other. Both draw the same chart: associated people with a start and an end, each belonging to one polity such as a country or a Senate class.
Nested object. One list of leaders per each polity and context.
[
{
"nameCountry": "Polity, f.e. Russia",
"context": {
"region": "slavic",
"flag": "🇷🇺",
"independence": {
"year": 1991,
"month": 12,
"day": 12
}
},
"leaders": [
{
"nameLeader": "Person, f.e. Boris Yeltsin",
"start": 1991,
"startMonth": 7,
"startDay": 10,
"end": 1999,
"endMonth": 12,
"endDay": 31
},
{
"nameLeader": "Person, f.e. Vladimir Putin",
"start": "2000-01-01",
"end": {
"year": 2008,
"month": 5,
"day": 7
}
}
]
}
]
List of lists. Flat. One leader with their polity and context.
[
{
"nameSenateSeat": "California Class I",
"context": {
"region": "west",
"flag": "CA",
"independence": "1850-09-09"
},
"nameSenator": "Person, f.e. John C. Frémont",
"start": 1850,
"startMonth": 9,
"startDay": 9,
"end": 1851,
"endMonth": 3,
"endDay": 3
},
{
"nameSenateSeat": "California Class I",
"context": {
"region": "west",
"flag": "CA",
"independence": "1850-09-09"
},
"nameSenator": "Person, f.e. John B. Weller",
"start": "1852-01-30",
"end": {
"year": 1857,
"month": 3,
"day": 3
}
}
]
These files put the month and day beside the year: startMonth, startDay, endMonth, endDay. A full date or { "year", "month", "day" } works too. Mix them freely: each start and end is read on its own. The file may be the list itself, or a list named rows, records, data, seats, or countries.