Computer Science/Python
[Python] nested json(dict) 플랫화(flatten)
yesbaby.
2022. 7. 26. 15:21
반응형
nested json을 처리하다 보면 오브젝트로 처리하기 보다 스트링으로 처리하는게 편한 경우가 있습니다.
그럴 때 플랫화 해서 사용하면 좋습니다.
저는 주로 spark에서 구조가 복잡한 json의 leaf들의 통계를 구할 때 많이 사용합니다.
원본:
{
"a": {
"b": {
"c": 1
},
"d": 0
}
}
플랫화 결과:
{
"a.b.c": 1,
"a.d": 0
}
플랫화 함수 코드:
def flatten_json(y):
out = {}
def flatten(x, name =''):
# If the Nested key-value
# pair is of dict type
deli = '.'
if type(x) is dict:
for a in x:
flatten(x[a], name + a + deli)
# If the Nested key-value
# pair is of list type
elif type(x) is list:
i = 0
for a in x:
flatten(a, name + str(i) + deli)
i += 1
else:
out[name[:-1]] = x
flatten(y)
return out
반응형