Go Unmarshal을 사용하여 복잡한 JSON 구문 분석
Go에서 인코딩/json 패키지는 JSON 데이터를 구문 분석하는 json.Unmarshal 함수를 제공합니다. 이 데이터는 예상치 못한 데이터 구조를 반복하기 위해 사전 정의된 구조체 또는 인터페이스 유형으로 역마샬링될 수 있습니다. 그러나 복잡한 JSON을 구문 분석하는 것은 어려울 수 있습니다.
예를 들어 다음 JSON을 고려해보세요.
{ "k1": "v1", "k2": "v2", "k3": 10, "result": [ [ ["v4", "v5", {"k11": "v11", "k22": "v22"}], ... ["v4", "v5", {"k33": "v33", "k44": "v44"}] ], "v3" ] }
json.Unmarshal을 사용하여 이 JSON을 구문 분석하려면 인터페이스{} 변수를 생성하고 구문 분석된 결과를 여기에 저장합니다:
type MyData struct { v1 string v2 string v3 int result [][]MySubData result2 string } type MySubData struct { v1 string v2 string result map[string]string } var f interface{} err := json.Unmarshal(b, &f)
정렬 해제 후 f 변수는 문자열 키와 빈 인터페이스가 있는 맵이 됩니다. 가치. 이 데이터에 액세스하기 위해 유형 어설션을 사용하여 f를 map[string]인터페이스{}로 변환하고 이를 통해 반복합니다.
m := f.(map[string]interface{}) for k, v := range m { switch vv := v.(type) { case string: // Handle string values case int: // Handle integer values case []interface{}: // Handle array values default: // Handle unknown types } }
이 접근 방식을 사용하면 유형을 유지하면서 예상치 못한 JSON 데이터 구조로 작업할 수 있습니다. 안전. 자세한 내용은 JSON과 Go에 대한 원문을 참고하세요.
위 내용은 Go의 `json.Unmarshal`을 사용하여 복잡한 JSON 구조를 효과적으로 구문 분석하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!