Files
golang-tests/single_file_tests/json.go
2020-02-10 20:08:45 +08:00

61 lines
1.2 KiB
Go

package main
import (
"encoding/json"
"strconv"
"fmt"
)
type TheLong struct {
Value int64
}
type Test struct {
Name string `json:"name"`
Name2 string `json:"name2"`
Name3 string `json:"name3,omitempty"`
Age int32 `json:"age"`
NotSer string `json:"-"`
Bool bool `json:"bool"`
BoolInStr bool `json:"bool_in_str,string"`
Long int64 `json:"long"`
Long2 *TheLong `json:"long2"`
}
// https://www.cnblogs.com/yorkyang/p/8990570.html
func (l *TheLong) MarshalJSON() (data []byte, err error) {
if l != nil {
data = []byte("\""+strconv.FormatInt(l.Value, 10) + "\"")
}
return
}
// func (l *TheLong) UnmarshalJSON(data []byte) error {
// v, err := strconv.ParseInt(string(data), 10, 64)
// if err != nil {
// return err
// }
// l.Value = v
// return nil
// }
func main() {
t := Test {
Name: "hatter",
Name2: "",
Name3: "",
Age: 18,
NotSer: "not ser!",
Bool: true,
BoolInStr: true,
Long: 342438204823084023,
Long2: &TheLong { Value: 342438204823084023 },
}
s, err := json.Marshal(t)
if err != nil {
fmt.Println("ERROR: ", err)
return
}
fmt.Println("JSON: ", string(s))
}