⛳️ 인프런 - cs 지식의 정석 강의를 듣고 학습한 내용입니다.
JSON, XML: 데이터 교환 형식
- Javascript 객체 문법으로 구조화된 데이터 교환 형식, 단순 배열이나 문자열로도 표현은 가능하다.
- 여러 언어에서 객체, 해시테이블, 딕셔너리 등으로 변환되어 쓰인다.
- 프로그래밍 언어나 프레임워크에 독립적이다. 언어나 프레임워크가 업데이트 되어도 JSON은 형태를 그대로 유지하여 사용할 수 있다는 뜻.
- 따라서 서로 다른 시스템 간에 데이터를 교환하기에 좋다.
{ "MyApplication" : [
{
"no": 1,
"name": "퍼피팅",
"os": "iOS",
"category": "소셜 네트워킹"
}, {
"no": 2,
"name": "우리동네 수리왕",
"os": "iOS",
"category": "라이프스타일"
}
]
}
❗️ 참고) 파싱(Parsing) 은 역직렬화보다 넓은 개념이지만 실무에서는 혼용하여 사용하는 것 같음.
Swift에서는 JSONEncoder, JSONDecoder 등을 사용
- 마크업 형태로 쓰이는 데이터 교환 형식
- 마크업 형태란, 태그 등을 이용해 문서나 데이터의 구조를 나타냄
프롤로그(버전, 인코딩), 루트요소(단일), 하위 요소 로 이루어진다.
<?xml version="1.0" encoding="UTF-8"?>
<APPList>
<APP no="1">
<name> 퍼피팅 </name> <os> iOS </os> <category> 소셜 네트워킹</category>
</APP>
<APP no="2">
<name> 우리동네 수리왕 </name> <os> iOS </os> <category> 라이프스타일 </category>
</APP>
</APPList>
참고로 위의 코드에서 no="1", no="2" 같이 선언된 부분들은 '속성' 으로, 부가 정보를 간결하게 추가한다.
다음과 같이 속성을 추가해 구분하지 않고 <APP>을 두 번 사용해도 문제 없음.
<APPList>
<APP>
<name> 퍼피팅 </name> <os> iOS </os> <category> 소셜 네트워킹</category>
</APP>
<APP>
<name> 우리동네 수리왕 </name> <os> iOS </os> <category> 라이프스타일 </category>
</APP>
</APPList>
❗️ 위 예시에서 보다시피 XML에서는 태그 안에 있는 값들에는 ""를 넣어 줄 필요가 없다. 단, 속성으로 선언하는 것들은 '' 또는 "" 를 추가해줘야 오류가 나지 않음.
다양한 타입의 값을 포함하는 JSON의 예시
{
"price": 0, // 숫자
"name": "퍼피팅", // 문자열
"isAvailable": true, // 불리언
"categories": ["소셜", "네트워킹"], // 배열
"details": { // 객체
"version": "1.1.2",
"encoding": "UTF-8"
}
}