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  }