아래와 같이 netsted한 구조를 가진 형식인데
- 자기 자신의 부모 값을 가져야 합니다. (최상위 루트는 부모가 자기 자신이니 None입니다!)
- 맨 끝 노드까지 찾게된 후 부모 중 리스트인 부모가 있다면 다음 인덱스로 다시 끝까지 찾게 됩니다.
- 값이 리스트 일 카운트+1 이 되며(기본 0),
- 다음 n+1인덱스도 끝까지 찾아 가게 됩니다! 설명이 다소 부족한 점 이해 부탁드립니다 꾸벅.
example
{
"a": {
"a_a": [
{
"a_a_a": [
{
"a_a_a_a": {
"a_a_a_a_a": {
"value": "first value",
"check": true
}
}
},
{
"a_a_a_b": {
"a_a_a_b_a": {
"value": "second value",
"check": true
}
}
}
]
}
]
}
}
result ( 원하는 방향 )
[
{"id": 1, "field_id": "a | 0", "parent_id": None, "value": None, "check": False},
{"id": 2, "field_id": "a_a | 0", "parent_id": 1, "value": None, "check": False},
{"id": 3, "field_id": "a_a_a | 0", "parent_id": 2, "value": None, "check": False},
{"id": 4, "field_id": "a_a_a_a | 0", "parent_id": 3, "value": None, "check": False},
{"id": 5, "field_id": "a_a_a_a_a | 0", "parent_id": 4, "value": "first_value", "check": True},
{"id": 6, "field_id": "a_a_a | 1", "parent_id": 2, "value": None, "check": False},
{"id": 7, "field_id": "a_a_a_b | 0", "parent_id": 6, "value": None, "check": False},
{"id": 8, "field_id": "a_a_a_b_a | 0", "parent_id": 7, "value": "second value", "check": True},
]
시도한 방향
def recursive(request: dict):
id = uuid.uuid().hex
serialize = []
for k, v in request.items():
if isinstance(v, list):
for re_list in v:
recursive(re_list)
elif isinstance(v, dict):
recursive(v)
else:
serialize.extend(
id,
f"{request.get('field_id')} | cnt",
request.get("parent_id", None),
request.get("check", False)
)
return serialize