json.Unmarshal не парсит все данные

есть вот такая структура и парс данных

type UserArray struct {
     Username string
     Password string
}
content, _ := ioutil.ReadFile("../db/user.json")
var users []UserArray
json.Unmarshal([]byte(content), &users)

user.json:

[{"user":"admin","password":"123456789"},{"user":"user","password":"1234567890"}]

после Unmarshalling'а нет "user" в обоих массивах, в чем проблема?


Ответы (1 шт):

Автор решения: Senior Pomidor

вам нужно указать специальные тэги, которые укажут какое поле из JSON соответствует вашей структуре.

В вашем конкретном cлучае поле username(struct) != user(JSON), только поля Password совпадают. поэтому в результате вы видете только заполненые поля password вам либо нужно называть поля в структуре как в JSON, либо указать специальные тэги.

Подробнее тут


import (
    "encoding/json"
    "fmt"
)

type UserArray struct {
    Username string `json:"user"`
    Password string `json:"password"`
}

func main() {
    content := `[{"user":"admin","password":"123456789"},{"user":"user","password":"1234567890"}]`
    var users []UserArray
    json.Unmarshal([]byte(content), &users)

    fmt.Printf("%v", users)
}

→ Ссылка