我想用python或javascript将平面表单数据转换为递归JSON数据。这个JSON数据稍后可以由模板引擎解释(Google对于tempest,它有类似于django的语法)。有很多例子可以将平面数据转换为递归数据,但问题是它不能是dict或list。
我试过很多方法,但还没有成功。所以,在挠头至少两周后,我决定在这里问一个问题。
FormData如下(键名可能不同):
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
. 我知道它可以更干净,但我会在它工作时重构它。
我做错什么了?我真的错过了什么吗?
谢谢!