데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식
특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다.
중괄호({}) 같은 형식으로 하고, 값을 ','로 나열하기에 그 표현이 간단하다.
name-value형식의 쌍
{
"employees": [
{
"name": "testname1",
"lastName": "Son"
},
{
"name": "testname2",
"lastName": "Son"
}
]
}
GSON은 자바 라이브러리중 하나인데, 자바 오브젝트를 쉽게 JSON으로 변환시켜주는 아주 간단하고 심플한 라이브러리
jackson은 자바진영 json 라이브러리로 잘 알려져 있지만 json 뿐만 아니라 XML, YAML, CSV 등 다양한 형식의 데이타를 지원하는 data-processing 툴이다.
스트림 방식이므로 속도가 빠르며 유연하며 다양한 third party 데이터 타입을 지원하며 annotation 방식으로 메타 데이타를 기술할 수 있으므로 JSON 의 약점중 하나인 문서화와 데이타 validation 문제를 해결할 수 있다
파일경로 설정 시 OS에 따라서 디렉토리사이에 표시해주는 구분자가 다르다.
Data라는 폴더에 test.txt라는 파일을 원하면
윈도우 -> Data\test.txt
리눅스 -> Data/test.txt
이걸 자바에서는
"Data" + File.separator + "test.txt" 라고 사용하면 된다
Base64란 Binary Data를 Text로 바꾸는 Encoding의 하나로써 Binary Data를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 Encoding이다.
하지만 Base64 Encoding을 하게되면 전송해야 될 데이터의 양도 약 33% 정도 늘어난다. 6bit당 2bit의 Overhead가 발생하기 때문이다.
그럼 이걸 왜쓰냐?
ASCII는 시스템간 데이터를 전달하기에 안전하지가 않다. Base64는 ASCII 중 제어문자와 일부 특수문자를 제외한 64개의 안전한 출력 문자(공통 ASCII 영역)만 사용한다.
그래서 HTML 또는 Email과 같이 문자를 위한 Media에 Binary Data를 포함해야 될 필요가 있을 때, 포함된 Binary Data가 시스템 독립적으로 동일하게 전송 또는 저장되는걸 보장하기 위해 사용한다