Я хотел бы преобразовать данные плоской формы в рекурсивные данные JSON на python или javascript.Эти данные JSON могут быть позже интерпретированы с помощью шаблонизатора (Google для Tempest, имеет синтаксис django).Существует множество примеров преобразования плоских данных в рекурсивные, но проблема в том, что это не может быть только дикт или список.
Я пытался сделать это разными способами, но пока не получилось.Поэтому, почесав голову в течение как минимум двух недель, я решил задать вопрос здесь.
Форма данных такая (имена ключей могут отличаться):
formdata = [
{"formname": "name", "formvalue": "Roel Kramer"},
{"formname": "email", "formvalue": "blaat@blaat.nl"},
{"formname": "paragraph-0.title", "formvalue": "test titel 1"},
{"formname": "paragraph-0.body", "formvalue": "bla bla body 1"},
{"formname": "paragraph-0.image-0.src", "formvalue": "src 1"},
{"formname": "paragraph-0.image-1.src", "formvalue": "src 2"},
{"formname": "paragraph-1.title", "formvalue": "test titel 2"},
{"formname": "paragraph-1.body", "formvalue": "bla bla body 2"},
{"formname": "paragraph-1.image-0.src", "formvalue": "src 3"},
{"formname": "paragraph-1.image-1.src", "formvalue": "src 4"},
{"formname": "paragraph-1.image-2.src", "formvalue": "src 5"},
{"formname": "paragraph-2.title", "formvalue": "test titel 3"},
{"formname": "paragraph-2.body", "formvalue": "bla bla body 3"},
{"formname": "paragraph-2.image-0.src", "formvalue": "src 6"},
{"formname": "paragraph-2.image-1.src", "formvalue": "src 7"},
]
Я бы хотелчтобы преобразовать его в этот формат:
{'paragraph':
[
{
'image': [{'src': 'src 1'}, {'src': 'src 2'}],
'body': 'body 2',
'title': 'titel 2'
},
{
'image': [{'src': 'src 3'}, {'src': 'src 4'}, {'src': 'src 5'}],
'body': 'body 2',
'title': 'titel 2'
},
{
'image': [{'src': 'src 6'}, {'src': 'src 7'},
'body': 'body 3',
'title': 'titel 3'
},
],
}
Как вы видите, я смешиваю диктанты со списками, что делает его немного сложнее.В своей последней попытке я дошел до того, что сценарий выяснил, где добавлять списки и где добавлять диктанты.Это приводит к следующему:
{'paragraph': [{'image': []}, {'image': []}, {'image': []}]}
Но когда я добавляю данные, результат не тот, который я ожидал.
{"paragraph": [{"body": "bla bla body 1", "image": {"src": "src 7"}, "title": "test titel 1"}, {"body": "bla bla body 2", "image": {"src": "src 5"}, "title": "test titel 2"}, {"body": "bla bla body 3", "image": {"src": "src 3"}, "title": "test titel 3"}, {"image": {"src": "src 6"}}], "name": "Roel Kramer", "email": "contact@roelkramer.nl"}
Полный сценарий можно увидеть на github gist .Я знаю, что это может быть намного чище, но я сделаю рефакторинг, когда он будет работать.
Что я делаю не так?Я что-то пропустил?Большое спасибо!