json的高阶使用1:定义两个类(Person/Worker),定义一个现写好的json字符串,通过json某个方法(json.RawMessage/Unmarshal()),利用好switch-case,根据一个字段类型(1/2),去解析下面一个字段。
go代码如下:
package main
import (
"encoding/json"
"fmt"
)
func main() {
// 将json字符串反序列化成 结构体对象
input := `
{
"Type":2,
"Body":{
"Name" : "lwt",
"Job" : "码农"
}
}
`
struct1 := TestStruct{}
if err := json.Unmarshal([]byte(input), &struct1); err != nil {
panic(err)
}
switch struct1.Type {
case 1:
var person Person
if err := json.Unmarshal(struct1.Body, &person); err != nil {
panic(err)
}
fmt.Println(person)
case 2:
var worker Worker
if err := json.Unmarshal(struct1.Body, &worker); err != nil {
panic(err)
}
fmt.Println(worker)
}
}
// TestStruct 结构体 .
type TestStruct struct {
Type int
Body json.RawMessage
}
// Person 结构体 .
type Person struct {
Name string
Age int
}
// Worker 结构体
type Worker struct {
Name string
Job string
}