024. JSON 데이터 변환기
Medium
바이브코딩
문제 설명
[문제]
JSON 데이터를 변환·비교하는 MCP 서버를 구현한다(단순화 버전). 모든 JSON은 문자열로 입력받는다.
중첩(nested) JSON이란 값 안에 또 객체가 들어 있는 구조다. 예: {"a":{"b":1}}은 키 a의 값이 다시 객체 {"b":1}인 2단계 구조다. 이를 점 표기법(dot notation)으로 평탄화하면 키를 점으로 이어 "a.b" 한 단계로 만든다.
[구현할 함수]
- flatten_json(nested_json: str) -> List[str]
중첩 JSON 문자열을 평탄화해, "키=값" 문자열들의 목록으로 반환한다(키 오름차순).
값은 문자열로 변환해 담는다. 빈 객체 "{}"는 빈 목록 [] 을 반환한다.
예: flatten_json('{"a":{"b":1}}') -> ["a.b=1"]
- unflatten_json(flat_keys: str) -> List[str]
점 표기법 키 목록(JSON 배열 문자열)을 받아, 복원될 최상위 키들을 오름차순 목록으로 반환한다.
예: unflatten_json('["a.b","a.c","x"]') -> ["a", "x"] # 최상위 키 a, x
빈 배열 "[]"는 [] 을 반환한다.
- json_diff(json1: str, json2: str) -> List[str]
두 JSON 문자열을 비교해 값이 다르거나 한쪽에만 있는 키들을 오름차순 목록으로 반환한다. 차이 없으면 [].
예: json_diff('{"a":1}', '{"a":2}') -> ["a"]
[제약]
- 입력 JSON은 문자열, 반환은 모두 문자열 목록(List[str])이다.
- 모든 결과 목록은 키 오름차순 정렬.
[예시]
flatten_json('{"a":{"b":1}}') -> ["a.b=1"]
unflatten_json('["a.b","a.c","x"]') -> ["a", "x"]
json_diff('{"a":1}', '{"a":2}') -> ["a"]
flatten_json('{}') -> []
로그인하고 풀기
AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.