A Laurent A Laurent - 4 months ago 20
JSON Question

Golang return lower case json key

I send Json data with net/http package by an Url, i want to have some lowercase keys in return, but it's not working.

In this example of the problem, i want lowercase 'count' and 'data' key.

package main

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

type tableau struct {
Count int `json"count"`
Data []People `json"data"`
}

type People struct {
Id int `json"Id"`
Name string `json"Name"`
Age int `json"Age"`
}

func main() {
http.HandleFunc("/people", recupPeople)
fs := http.FileServer(http.Dir("Static"))
http.Handle("/", fs)
http.ListenAndServe(":80", nil)
}

func recupPeople(w http.ResponseWriter, r *http.Request) {
listPeople := &tableau{
Count: 4,
Data: []People{
People{Id: 1, Name: "Laurent", Age: 20},
People{Id: 2, Name: "Laurent", Age: 20},
},
}
peop, _ := json.Marshal(listPeople)
fmt.Println(string(peop))
w.Write(peop)
json.NewEncoder(w).Encode(listPeople)
}


But when i check the URL i didn't have lower case.
enter image description here

Cordially,
Laurent

Answer

You forgot colon in tag declaration. As tags are not in proper format, field name fields are in your json response.

Try this:

type tableau struct {
    Count int      `json:"count"`
    Data  []People `json:"data"`
}