Да ! Спасибо ! Я начал изучать его около 4 часов назад, но еще не узнал о типе интерфейса, я немного прочту об этом.

ня я только начинаю изучать GoLang, я пытаюсь создать простой веб-сервер Rest API.

Вот ответ Struct, который я хочу отправить на каждый запрос к веб-серверу:

package main

type HttpResp struct{
    Status      int         `json:"status"`
    Description string      `json:"description"`
    Body        string      `json:"body"`
}

И вот мойarticles.go файл, у которого есть функция, которая получает все статьи в базе данных:

package main

import (
    "encoding/json"
    "net/http"
    "log"
)

type Article struct{
    Id          string  `json:"id"`
    Title       string  `json:"title"`
    Body        string  `json:"body"`
    Description string  `json:"description"`
}

func AllArticles(w http.ResponseWriter, r *http.Request){
    log.Print("/articles - GET")
    db := connect()
    defer db.Close()

    var articles []Article
    results, err := db.Query("SELECT * FROM Articles")

    if err != nil{
        log.Print(err)
        return
    }

    for results.Next(){
        var article Article
        err = results.Scan(&article.Title, &article.Description, &article.Body, &article.Id)

        if err != nil{
            serr, _ := json.Marshal(err)
            json.NewEncoder(w).Encode(HttpResp{Status: 500, Description: "Failed to retrieve all articles", Body: string(serr)})
        }

        articles = append(articles, article)
    }   
    sarr, _ := json.Marshal(articles)

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(HttpResp{Status: 200, Body: string(sarr)})
}

Проблема, с которой я здесь сталкиваюсь, заключается в том, что ответ таков:

{ "Статус": 200, "Описание": "", "тело": "[{\" идентификатор \ ": \" 1 \», \ "TITLE \": \ "Первый \", \ "тело \" : \ "Это тестовое тело \", \ "description \": \ "Это тестовое сообщение \"}] "}

Я бы хотел, чтобы тело было просто JSON, а не строкой. Как я могу достичь этого?

Ответы на вопрос(0)

Ваш ответ на вопрос