Я получаю данные JSON от внешнего источника. Имена полей в этом JSON не являются тем, что я хочу носить с собой, поэтому я конвертирую их в имена, которые имеют смысл для меня, используя теги json:"originalname"
.Игнорировать теги JSON при сортировке
Когда я маршал такой объект обратно в JSON, я, естественно, снова получаю уродливые (оригинальные) имена.
Есть ли способ игнорировать теги при сортировке? Или способ указать другое имя для marshall и unmarshall?
Чтобы уточнить, я подготовил example in the playground и наклеил тот же код ниже.
Заранее спасибо.
package main
import (
"encoding/json"
"fmt"
)
type Band struct {
Name string `json:"bandname"`
Albums int `json:"albumcount"`
}
func main() {
// JSON -> Object
data := []byte(`{"bandname": "AC/DC","albumcount": 10}`)
band := &Band{}
json.Unmarshal(data, band)
// Object -> JSON
str, _ := json.Marshal(band)
fmt.Println("Actual Result: ", string(str))
fmt.Println("Desired Result:", `{"Name": "AC/DC","Albums": 10}`)
// Output:
// Actual Result: {"bandname":"AC/DC","albumcount":10}
// Desired Result: {"Name": "AC/DC","Albums": 10}
}
Благодарим за это. Я надеялся, что я пропустил какой-то специальный синтаксис для тегов, чтобы добиться этого с меньшим количеством кода. Что-то вроде 'json:" originalname, MarshalName "' ... – DannyB
Я боюсь, что нет. Это все, что у нас есть. – thwd