вопрос
jsonПри использовании в пакете переменные в структуре не добавляются.tagМожно ли нормально конвертироватьjsonв поле?
как ответить
-
если переменная
首字母小写, тогдаprivate. в любом случае不能转, потому что он недоступен反射信息. -
если переменная
首字母大写, тогдаpublic.-
不加tag, который обычно может быть преобразован вjsonполя вjsonИмя внутреннего поля и структура внутреннего поля原名一致. -
加了tag,отstructПеременаjsonкогда,jsonИмя поляtagИмя поля в поле, исходное имя поля бесполезно.
-
Пример
Узнайте больше на примере.
package main
import (
"encoding/json"
"fmt"
)
type J struct {
a string //小写无tag
b string `json:"B"` //小写+tag
C string //大写无tag
D string `json:"DD"` //大写+tag
}
func main() {
j := J {
a: "1",
b: "2",
C: "3",
D: "4",
}
fmt.Printf("转为json前j结构体的内容 = %+v\n", j)
jsonInfo, _ := json.Marshal(j)
fmt.Printf("转为json后的内容 = %+v\n", string(jsonInfo))
}
выход
转为json前j结构体的内容 = {a:1 b:2 C:3 D:4}
转为json后的内容 = {"C":"3","DD":"4"}
объяснять
- В структуре определены четыре поля, соответствующие
小写无tag,小写+tag,大写无tag,大写+tag. - Преобразовать в
jsonпоследний инициал小写的с тегами или без都不能Преобразовать вjsonсодержание, при этом大写的ДобавленtagМогу取别名, не добавляйтеtagноjsonполя и поля структуры原名一致.
Рекомендуемые статьи:
- Вопросы для интервью с Golang: как избежать побега из памяти? ?
- Вопросы для интервью с Голангом: просто поговорить о побеге из памяти?
- Вопрос из интервью с Golang: будет ли происходить копирование памяти при преобразовании строки в массив байтов?
- golang вопросы интервью: флип содержит
中文、数字、英文字母Нить - Вопрос из интервью с Golang: копировать большой фрагмент дороже, чем маленький?
- Вопросы для интервью с Golang: Можете ли вы рассказать о разнице между uintptr и unsafe.Pointer?