12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright 2012 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package main
- import (
- "encoding/json"
- "log"
- "reflect"
- )
- type Message struct {
- Name string
- Body string
- Time int64
- }
- // STOP OMIT
- func Encode() {
- m := Message{"Alice", "Hello", 1294706395881547000}
- b, err := json.Marshal(m)
- if err != nil {
- panic(err)
- }
- expected := []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`)
- if !reflect.DeepEqual(b, expected) {
- log.Panicf("Error marshaling %q, expected %q, got %q.", m, expected, b)
- }
- }
- func Decode() {
- b := []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`)
- var m Message
- err := json.Unmarshal(b, &m)
- if err != nil {
- panic(err)
- }
- expected := Message{
- Name: "Alice",
- Body: "Hello",
- Time: 1294706395881547000,
- }
- if !reflect.DeepEqual(m, expected) {
- log.Panicf("Error unmarshaling %q, expected %q, got %q.", b, expected, m)
- }
- m = Message{
- Name: "Alice",
- Body: "Hello",
- Time: 1294706395881547000,
- }
- // STOP OMIT
- }
- func PartialDecode() {
- b := []byte(`{"Name":"Bob","Food":"Pickle"}`)
- var m Message
- err := json.Unmarshal(b, &m)
- // STOP OMIT
- if err != nil {
- panic(err)
- }
- expected := Message{
- Name: "Bob",
- }
- if !reflect.DeepEqual(expected, m) {
- log.Panicf("Error unmarshaling %q, expected %q, got %q.", b, expected, m)
- }
- }
- func main() {
- Encode()
- Decode()
- PartialDecode()
- }
|