Как удалить элемент из массива JSON без удаления следующих элементов в Golang - PullRequest
0 голосов
/ 31 марта 2020

У меня есть функция, которая получает идентификатор из запроса POST и удаляет элемент с номером, равным идентификатору, с идентичным кодом:

w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "POST, GET")
w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding")

switch r.Method {
case "POST":
    body, err := ioutil.ReadAll(r.Body)
    if err != nil {
        fmt.Print(err)
        return
    }

    type row struct {
        Row int
    }
    var rowId row
    json.Unmarshal(body, &rowId)

    var id = rowId.Row
    type requestBody struct {
        Name        string
        Id          int
        Price       int
        Img         string
        Link        string
        Description string
    }
    var request requestBody
    json.Unmarshal([]byte(body), &request)

    file, _ := ioutil.ReadFile("./static/nuts.json")

    data := []requestBody{}

    json.Unmarshal(file, &data)
    data = append(data[:id])

    dataBytes, err := json.MarshalIndent(data, "", "   ")
    if err != nil {
        fmt.Print(err)
    }

    err = ioutil.WriteFile("./static/nuts.json", dataBytes, 0644)
    if err != nil {
        fmt.Print(err)
    }
}

Но если у меня есть 3 элемента в JSON, и удалите 2-й элемент, следующий элемент будет удален в. Я новичок в GO, и я не знаю, как решить эту проблему. Помогите мне, пожалуйста

1 Ответ

1 голос
/ 31 марта 2020

Ответ был изменен следующим образом:

data = добавьте (data [: id])

к этому:

data = append (data [: id], data [id + 1:] ...)

И все будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...