github.com/huandu/go@v0.0.0-20151114150818-04e615e41150/doc/progs/json4.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "encoding/json" 9 "log" 10 "reflect" 11 ) 12 13 type FamilyMember struct { 14 Name string 15 Age int 16 Parents []string 17 } 18 19 // STOP OMIT 20 21 func Decode() { 22 b := []byte(`{"Name":"Bob","Age":20,"Parents":["Morticia", "Gomez"]}`) 23 var m FamilyMember 24 err := json.Unmarshal(b, &m) 25 26 // STOP OMIT 27 28 if err != nil { 29 panic(err) 30 } 31 32 expected := FamilyMember{ 33 Name: "Bob", 34 Age: 20, 35 Parents: []string{"Morticia", "Gomez"}, 36 } 37 38 if !reflect.DeepEqual(expected, m) { 39 log.Panicf("Error unmarshalling %q, expected %q, got %q", b, expected, m) 40 } 41 } 42 43 func main() { 44 Decode() 45 }