반응형
개 요 |
about Json |
관련 개념 |
marshalling/unmarshalling
encoding/decoding
|
예제 |
기본적인 코드 구현 |
확장 |
관련 된 확장 개념 등 |
개요
JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다.
이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다.
왜 Json을 사용하는가?
- 경량의 데이터 포맷(XML보다)
- 간단한 포맷(가독성이 좋음)
- 기존 XML보다 다양한 데이터 타입 제공(string, number, boolean), xml은 only string
Json이 가지는 형식
object는 name/value 쌍들의 비순서화된 SET이다.
object는 { (좌 중괄호)로 시작하고 } (우 중괄호)로 끝내어 표현한다.
각 name 뒤에 : (colon)을 붙이고 , (comma)로 name/value 쌍들 간을 구분한다.
예제)
{
"acet": "박태하",
"ace-t": "terry"
}
array은 값들의 순서화된 collection 이다. array는 [ (left bracket)로 시작해서 ] (right bracket)로 끝내어 표현한다.
, (comma)로 array의 값들을 구분한다.
예제 1)
{
"acet": [
{
"name": "박태하",
"age": 100,
"job": "developer"
}, {
"name": "테리팍",
"age": 60,
"job": "architector"
}
]
}
예제 2)
{
"acet": [
{
"name": "박태하",
"age": 100,
"job": "developer"
}, {
"name": "테리팍",
"age": 60,
"job": "architector"
}
],
"terry": [
{
"name": "으라차차",
"age": 29,
"job": "백수"
}
]
}
관련 개념
- encoding/decoding
- encoding은 말 그래도 코드를 만드는 것.
- 소스코딩 : 코드를 압축하는 과정
- 채널코딩 : 데이터를 압축하는 것이 아니라 반대로 더 늘리는 알고리즘.
- decoding은 만들어진 코드를 푸는 것.
- 왜 encoding/decoding을 사용하는가? 효율적, 안전성, 신뢰성 때문에
- Json marshalling/unmarshalling
- marshalling : Object -> Json
- 아래의 golang 예제를 보면 jsonBytes, err := json.Marshal(mem) 의 리턴은 byte[]과 error 객체이다.
- 그런데 보통 byte[] 가 아닌 Json으로 인코딩된 바이트 배열이다.
- unmarshalling : Json -> Object
예제
- go lang
package main import ( "encoding/json" "fmt" ) //Member - type Member struct { Name string Age int Active bool } func main() { // Go 구조체 데이터 mem := Member{} mem.Name = "오광봉" mem.Age = 80 mem.Active = true // JSON 인코딩 jsonBytes, err := json.Marshal(mem) if err != nil { panic(err) } // JSON 바이트를 문자열로 변경 jsonString := string(jsonBytes) fmt.Println(jsonString) json.Unmarshal(jsonBytes, &mem) fmt.Println(mem.Name) } |
반응형