JSON에서 Snake-Case를 CamelCase 키로 변환
Go에서는 JSON 문서의 키를 snake_case에서 camelCase로 변환하는 것이 어려울 수 있습니다. 특히 JSON이 중첩되어 있고 임의로 큰 유형 또는 인터페이스{} 유형이 포함될 수 있는 경우.
방법 1: 태그와 함께 다른 구조체 사용
간단한 변환의 경우 다음을 수행할 수 있습니다. 다양한 태그로 다양한 구조체를 정의하는 Go의 기능을 활용하세요. JSON을 snake_case 태그를 사용하여 소스 구조체로 역정렬화한 다음 이를 camelCase 태그를 사용하여 대상 구조체로 간단하게 변환합니다.
<code class="go">import ( "encoding/json" ) // Source struct with snake_case tags type ESModel struct { AB string `json:"a_b"` } // Target struct with camelCase tags type APIModel struct { AB string `json:"aB"` } func ConvertKeys(json []byte) []byte { var x ESModel json.Unmarshal(b, &x) b, _ = json.MarshalIndent(APIModel(x), "", " ") return b }</code>
방법 2: 맵 키를 재귀적으로 변환
더 복잡한 JSON 문서의 경우 이를 맵으로 역마샬링해 볼 수 있습니다. 성공하면 맵 내의 모든 키와 값에 키 변환 함수를 반복적으로 적용합니다.
<code class="go">import ( "bytes" "encoding/json" "fmt" "strings" ) func ConvertKeys(j json.RawMessage) json.RawMessage { m := make(map[string]json.RawMessage) if err := json.Unmarshal([]byte(j), &m); err != nil { // Not a JSON object return j } for k, v := range m { fixed := fixKey(k) delete(m, k) m[fixed] = convertKeys(v) } b, err := json.Marshal(m) if err != nil { return j } return json.RawMessage(b) } func fixKey(key string) string { return strings.ToUpper(key) }</code>
위 내용은 Go를 사용하여 JSON에서 Snake-Case를 CamelCase 키로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!