APP DEVELOPMENT TERM
JSON
서비스 사이에서 데이터를 표현하는 글자 형식
JSON은 앱·웹·서버가 이름과 값, 목록 구조로 데이터를 주고받거나 저장할 수 있게 표현하는 읽기 쉬운 텍스트 형식입니다.
30초 이해
JSON은 예약자 이름과 시간처럼 여러 정보를 서비스 사이에서 같은 구조로 이해하도록 정리하는 데이터 표현 형식입니다
예약 결과에는 예약 번호, 회원 이름, 수업 시간, 결제 상태와 여러 참가자 목록이 함께 들어갑니다. JSON은 이런 데이터를 이름과 값의 묶음, 목록과 기본 값으로 표현해 앱과 서버가 같은 구조로 읽게 합니다.
JSON은 데이터베이스나 프로그래밍 언어가 아니며 모든 종류의 값을 그대로 담지도 않습니다. 날짜를 어떤 문자열로 표현할지, 값이 없을 때 필드를 생략할지 null을 보낼지, 금액의 단위가 무엇인지 같은 별도 약속이 필요합니다.
한 장으로 이해
서비스 데이터가 JSON으로 전달되고 화면에 보이는 과정
프로그램의 데이터를 JSON 규칙에 맞게 바꾸고 전송한 뒤 받는 쪽이 구조와 값을 확인해 사용합니다.
- 01
데이터 정리
예약 번호·시간·상태와 목록의 의미를 정합니다.
- 02
JSON 변환
객체·배열과 기본 값으로 전송할 글자 형식을 만듭니다.
- 03
API 전달
HTTP 요청이나 응답 내용으로 JSON을 보냅니다.
- 04
검사·표시
받은 구조와 형식을 확인한 뒤 화면과 업무에 사용합니다.
JSON 문법이 맞는 것과 서비스가 값의 의미를 올바르게 이해하는 것은 별개이므로 데이터 규칙과 검증이 함께 필요합니다.
언제 사용하는 개념인가요?
API 데이터를 주고받을 때
앱·서버·외부 서비스가 요청과 응답의 정보 구조를 공유합니다.
설정이나 결과를 보관할 때
중첩된 항목과 목록이 있는 설정·로그·내보내기 데이터를 표현합니다.
연동 문서를 검수할 때
필드 이름, 값 종류, 필수 여부, 예시와 오류 응답을 개발 전에 확인합니다.
왜 중요한가요?
데이터의 이름과 구조를 맞춥니다
보내는 쪽과 받는 쪽이 같은 필드와 목록 구조를 사용해야 값이 빠지거나 엉뚱하게 표시되지 않습니다.
필수 값과 예외를 발견합니다
빈 값, 없는 필드, 잘못된 숫자와 예상하지 못한 목록을 어떻게 처리할지 정하게 합니다.
버전 변경의 영향을 확인합니다
필드를 추가·삭제하거나 의미를 바꿀 때 기존 앱과 외부 연동이 계속 동작하는지 판단할 수 있습니다.
실제 상황 예시
클래스 예약 결과를 JSON으로 보낸다면
화면에 필요한 값뿐 아니라 각 값의 형식과 없는 경우의 처리까지 약속합니다.
응답에 담을 데이터
- 예약 번호와 회원 식별자
- 수업 시작 시간과 시간대
- 예약·결제 상태
- 참가자 이름의 목록
형식으로 함께 정할 기준
- 금액의 숫자 단위와 통화
- 날짜·시간 문자열 형식
- 필수·선택 필드와 null
- 새 필드가 추가될 때 호환 방식
‘시간’이나 ‘금액’이라는 이름만 같아도 단위와 형식이 다르면 오류가 납니다. JSON 예시와 필드 설명을 함께 관리해야 합니다.
자주 하는 오해
“JSON은 데이터베이스다”
JSON은 데이터를 표현하는 형식입니다. 데이터베이스는 데이터를 저장·조회·관리하는 시스템입니다.
“JSON은 JavaScript에서만 쓴다”
이름의 유래와 별개로 다양한 개발 언어와 서비스가 JSON을 읽고 작성할 수 있습니다.
“JSON 문법만 맞으면 연동이 된다”
필드 이름과 값의 종류·단위·필수 여부가 약속과 맞아야 실제 기능이 올바르게 동작합니다.
우리 서비스에 적용할 때 확인하세요
- 1필드 이름과 값의 의미를 문서로 정했나요?
- 2날짜·시간·금액의 형식과 단위가 분명한가요?
- 3값이 없거나 필드가 빠졌을 때 처리 방법이 있나요?
- 4예상과 다른 값이나 구조를 받으면 안전하게 거부하나요?
- 5필드를 변경할 때 기존 앱과 외부 연동을 유지하나요?
공식 참고
서비스 기준은 공식 문서에서 다시 확인하세요
다음 자료
이해한 내용을 바로 적용해보세요
JSON을 주고받는 API와 REST API, 실제 데이터를 보관하고 조회하는 데이터베이스를 함께 확인하세요.
JSON 예시만 보지 말고 각 값의 의미·형식·빈 상태를 확인하세요
데이터 사전을 함께 정리하면 앱·서버·외부 서비스 사이의 해석 차이를 줄일 수 있습니다.
