JSON 응답의 동적 필드 선택
Go에서 개발자는 구조체를 JSON 응답으로 인코딩하는 경우가 많습니다. 클라이언트가 응답을 사용자 정의할 수 있도록 요청에 따라 필드를 선택적으로 제외하거나 포함할 수 있습니다.
동적 필드 제거 또는 숨기기
안타깝게도 Go는 정적으로- 정의된 JSON 구조 태그(예: json:"date")는 동적 필드 제거 또는 숨기기를 허용하지 않습니다. json:"-" 태그는 필드를 완전히 무시하므로 필드를 선택적으로 숨기는 데 적합하지 않습니다.
지도를 사용한 해결 방법
가능한 해결책은 지도를 사용하는 것입니다. 구조체 대신 [문자열]인터페이스{}. 이렇게 하면 삭제 기능을 호출하여 필드를 동적으로 제거할 수 있습니다.
type SearchResponse map[string]interface{} func (r SearchResponse) RemoveField(field string) { delete(r, field) }
응답을 생성하려면 지도를 만들고 데이터로 채우고 원하지 않는 필드를 제거할 수 있습니다.
m := SearchResponse{ "date": "2023-03-01", "company": "Acme Corp", "industry": "Software", "continent": "North America", } m.RemoveField("industry")
결과 맵에는 응답에 대해 원하는 필드만 포함됩니다.
{ "date": "2023-03-01", "company": "Acme Corp", "continent": "North America" }
이 접근 방식은 동적 필드 선택을 제공하며 런타임 시 구조체 수정.
추가 고려 사항
필드를 선택적으로 제외하는 대안은 데이터베이스에서 요청된 필드만 검색하는 것입니다. 이는 더 효율적일 수 있지만 모든 경우에 가능하지는 않습니다.
위 내용은 Go의 JSON 응답에서 동적 필드 선택을 어떻게 달성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!