Вопрос: Как сделать JSON API клиент с типизированным ответом (generic helper)?
Python
Middle
Без компании
Вопрос: Как сделать JSON API клиент с типизированным ответом (generic helper)?
Ответы
```go
func GetJSON[T any](ctx context.Context, client *http.Client, url string) (T, error) {
var zero T
req, _ := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
resp, err := client.Do(req)
if err != nil { return zero, err }
defer resp.Body.Close()
if resp.StatusCode/100 != 2 {
b, _ := io.ReadAll(resp.Body)
return zero, fmt.Errorf("bad status %d: %s", resp.StatusCode, string(b))
}
var out T
if err := json.NewDecoder(resp.Body).Decode(&out); err != nil { return zero, err }
return out, nil
}
```
**Как это работает:** generics позволяют сделать типизированный helper без отражения (`reflect`).