...

Source file src/github.com/json-iterator/go/example_test.go

Documentation: github.com/json-iterator/go

     1  package jsoniter
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strings"
     7  )
     8  
     9  func ExampleMarshal() {
    10  	type ColorGroup struct {
    11  		ID     int
    12  		Name   string
    13  		Colors []string
    14  	}
    15  	group := ColorGroup{
    16  		ID:     1,
    17  		Name:   "Reds",
    18  		Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
    19  	}
    20  	b, err := Marshal(group)
    21  	if err != nil {
    22  		fmt.Println("error:", err)
    23  	}
    24  	os.Stdout.Write(b)
    25  	// Output:
    26  	// {"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}
    27  }
    28  
    29  func ExampleUnmarshal() {
    30  	var jsonBlob = []byte(`[
    31  		{"Name": "Platypus", "Order": "Monotremata"},
    32  		{"Name": "Quoll",    "Order": "Dasyuromorphia"}
    33  	]`)
    34  	type Animal struct {
    35  		Name  string
    36  		Order string
    37  	}
    38  	var animals []Animal
    39  	err := Unmarshal(jsonBlob, &animals)
    40  	if err != nil {
    41  		fmt.Println("error:", err)
    42  	}
    43  	fmt.Printf("%+v", animals)
    44  	// Output:
    45  	// [{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]
    46  }
    47  
    48  func ExampleConfigFastest_Marshal() {
    49  	type ColorGroup struct {
    50  		ID     int
    51  		Name   string
    52  		Colors []string
    53  	}
    54  	group := ColorGroup{
    55  		ID:     1,
    56  		Name:   "Reds",
    57  		Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
    58  	}
    59  	stream := ConfigFastest.BorrowStream(nil)
    60  	defer ConfigFastest.ReturnStream(stream)
    61  	stream.WriteVal(group)
    62  	if stream.Error != nil {
    63  		fmt.Println("error:", stream.Error)
    64  	}
    65  	os.Stdout.Write(stream.Buffer())
    66  	// Output:
    67  	// {"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}
    68  }
    69  
    70  func ExampleConfigFastest_Unmarshal() {
    71  	var jsonBlob = []byte(`[
    72  		{"Name": "Platypus", "Order": "Monotremata"},
    73  		{"Name": "Quoll",    "Order": "Dasyuromorphia"}
    74  	]`)
    75  	type Animal struct {
    76  		Name  string
    77  		Order string
    78  	}
    79  	var animals []Animal
    80  	iter := ConfigFastest.BorrowIterator(jsonBlob)
    81  	defer ConfigFastest.ReturnIterator(iter)
    82  	iter.ReadVal(&animals)
    83  	if iter.Error != nil {
    84  		fmt.Println("error:", iter.Error)
    85  	}
    86  	fmt.Printf("%+v", animals)
    87  	// Output:
    88  	// [{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]
    89  }
    90  
    91  func ExampleGet() {
    92  	val := []byte(`{"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}`)
    93  	fmt.Printf(Get(val, "Colors", 0).ToString())
    94  	// Output:
    95  	// Crimson
    96  }
    97  
    98  func ExampleMyKey() {
    99  	hello := MyKey("hello")
   100  	output, _ := Marshal(map[*MyKey]string{&hello: "world"})
   101  	fmt.Println(string(output))
   102  	obj := map[*MyKey]string{}
   103  	Unmarshal(output, &obj)
   104  	for k, v := range obj {
   105  		fmt.Println(*k, v)
   106  	}
   107  	// Output:
   108  	// {"Hello":"world"}
   109  	// Hel world
   110  }
   111  
   112  type MyKey string
   113  
   114  func (m *MyKey) MarshalText() ([]byte, error) {
   115  	return []byte(strings.Replace(string(*m), "h", "H", -1)), nil
   116  }
   117  
   118  func (m *MyKey) UnmarshalText(text []byte) error {
   119  	*m = MyKey(text[:3])
   120  	return nil
   121  }
   122  

View as plain text