소개 | json의 전체 이름은 Javascript 개체 표기법이고 전체 중국어 이름은 js 개체 표기법입니다. 직렬화 및 역직렬화 프로토콜 중에는 json, xml, yaml, 프로토콜 버퍼 등이 있습니다. 그 중 json은 프론트엔드와 백엔드 API 계약 데이터의 주요 전송 형식이다. json은 숫자 값, 부울 값, 배열 및 객체의 네 가지 데이터 유형을 지원합니다. 이 네 가지 데이터 유형을 사용하면 복잡한 데이터 모델을 구축할 수 있습니다. |
Go 언어에서는 json 표준 라이브러리를 사용하여 데이터 직렬화 및 역직렬화를 구현할 수 있습니다. 이 라이브러리는 맵, 구조, 배열, 슬라이스 및 내장 기본 데이터 유형을 직렬화 및 역직렬화하는 편리한 방법을 제공합니다. json 표준 라이브러리를 사용하면 데이터를 json 형식으로 쉽게 변환하고 필요할 때 원래 데이터 유형으로 다시 구문 분석할 수 있습니다. 이는 데이터 처리에 있어 매우 편리한 기능을 제공합니다.
여기에서는 json 사용을 설명하기 위해 세 가지 예를 들어 보겠습니다. 초보자의 경우 하나의 구조 개체만 사용하여 데이터를 주고받는 경우가 많습니다. 아래에서 구체적인 예를 살펴보겠습니다. 1. 구조 객체를 사용하여 데이터를 수신합니다. ```` 유형 사람 구조체 { 이름 문자열 `json:"name"` 연령 int `json:"age"` } 기능 메인() { data := `{"name": "앨리스", "age": 25}` var p 사람 오류 := json.Unmarshal([]byte(data), &p) 오류가 있는 경우 != nil { fmt.Println("json을 구문 분석하지 못했습니다:", err) 반품
구조유형 사람 구조체 {<br>
이름 문자열 `json:"name"`<br>
Age int `json:"age"`<br>
}
<br>
func 메인() {<br>
var (<br>
new인당<br>
방탄소년단 []바이트<br>
)<br>
당:=사람{<br>
이름: "릴리",<br>
나이: 29,<br>
}<br>
// 직렬화<br>
BTS인 경우 err = json.Marshal(per) err !=nil{<br>
로그.치명적(err.Error())<br>
복귀<br>
}
<br>
if err = json.Unmarshal(bts, &newPer); err !=nil{<br>
로그.치명적(err.Error())<br>
복귀<br>
}<br>
fmt.Println(newPer)<br>
}
func main() {<br>
var (<br>
smap = 맵[문자열]int{<br>
"나이": 28,<br>
"섹스": 1,<br>
"층": 12,<br>
}<br>
newSmap = make(map[string]int)<br>
방탄소년단 []바이트<br>
)<br>
BTS인 경우 err = json.Marshal(smap) err !=nil {<br>
로그.치명적(err.Error())<br>
복귀<br>
}<br>
if err = json.Umarshal(bts, &newSmap); err !=nil {<br>
로그.치명적(err.Error())<br>
복귀<br>
}<br>
fmt.Println(newSmap)<br>
}
func main() {<br>
var (<br>
연령 []int = []int{23, 20, 28, 25, 30}<br>
방탄소년단 []바이트<br>
오류 오류<br>
newAges = make([]int, len(연령))<br>
)<br>
BTS인 경우 err = json.Marshal(ages) err != nil {<br>
fmt.Println(err.Error())<br>
복귀<br>
}<br>
if err = json.Unmarshal(bts, &newAges); err != nil {<br>
fmt.Println(err.Error())<br>
복귀<br>
}<br>
fmt.Println("새로운 시대: ", newAges)<br>
복귀<br>
}
초보자는 json 직렬화 및 구조 역직렬화에 대해 상대적으로 명확하지만 후자의 두 가지를 거의 또는 전혀 사용하지 않을 수 있습니다.
여기서는 구조를 사용할 때 가끔 사용하는 기능에 대해서도 설명하고 싶습니다. 구조의 json에서 지원하는 태그 값 기능은 다음과 같습니다.
Person 구조체 유형 {<br>
이름 문자열 `json:"name,omitempty"`<br>
Age int `json:"age"`<br>
}<br>
이는 함수 생략의 태그 값이 설정되었을 때 해당 구조의 데이터 요소 값이 0이면 출력되지 않는다는 의미입니다. 즉, 서버에서 반환한 구조 데이터의 요소가 비어 있고 이 요소가 프런트엔드에 반환되지 않는 경우 생략이라는 json 태그 값 속성을 사용할 수 있습니다.
Didi Company의 수석 엔지니어 Taowen이 작성한 세계에서 가장 빠른 json 파싱 라이브러리를 제공합니다. 깃허브 주소: jsoniter.
위 내용은 json 데이터의 직렬화 및 역직렬화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!