@NubasLol

Как добавить поле в json?

Каким образом в "data" могу добавить поле "status" ?

func (r JsonResponse) SuccessResponse(w http.ResponseWriter, body interface{}) {
	data, err := json.Marshal(body)
}
  • Вопрос задан
  • 253 просмотра
Решения вопроса 2
@PapaStifflera
Родился, вырос...
data, err := json.Marshal(body)
if err != nil {
    log.Println(err)
}

w.Header().Add("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
_, _ = w.Write(data)

Но этот код не добавит поле, а лишь отправит http-заголовок со статусом 200 - ОК.
Ответ написан
Допустим параметр body это экземпляр типа Body. В типе должно быть поле Status c указанием имени JSON поля:
type Body struct {
	...
	Status  string  `json:"status"`
}


Теперь можно сделать
func (r JsonResponse) SuccessResponse(w http.ResponseWriter, body interface{}) {
  body.Status = "success"
  data, err := json.Marshal(body)
}


Но лучше поле так напрямую не обновлять, а сделать сеттер
func (this *Body) SetStatus(status string) {
	this.Status = status
}

func (r JsonResponse) SuccessResponse(w http.ResponseWriter, body interface{}) {
  body.SetStatus("success")
  data, err := json.Marshal(body)
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы