Есть задача придумать человекоредактируемый формат сериализации простенькой древовидной структуры. Каждый элемент структуры является либо контейнером, либо конечным элементом (листом). Контейнер может содержать произвольное количество элементов (как контейнеров, так и листов). При этом, у контейнеров и листов есть метаданные, достаточно сложные.
На XML такая задача решается элементарно, например как-то так:
<root>
<container title="foo">
<container title="baz">
<element title="e1" />
<element title="e2" />
</container>
<element title="e3" />
</container>
</root>
Но есть определенные причины хотеть не XML, а JSON. А как сконвертировать подобное дерево в JSON? Я вот предпринял две попытки и получилась громоздкая хрень:
{
"root": [
{
"type": "container",
"title": "foo",
"elements": [
{
"type": "container",
"title": "baz",
"elements": [
{
"type": "element",
"title": "e1"
},
{
"type": "element",
"title": "e2"
}
]
},
{
"type": "element",
"title": "e3"
}
]
}
]
}
{
"root": [
{
"container": {
"title": "foo",
"elements": [
{
"container": {
"title": "baz",
"elements": [
{
"element": {
"title": "e1"
}
},
{
"element": {
"title": "e2"
}
}
]
}
},
{
"element": {
"title": "e3"
}
}
]
}
}
]
}
Обилие скобочек явно не способствует человекоредактируемости. Есть идеи как-то улучшить JSONовский формат?