decode_example_test.go (2574B)
1 package gojay_test 2 3 import ( 4 "fmt" 5 "log" 6 "strings" 7 8 "go.lair.cx/gojay" 9 ) 10 11 func ExampleUnmarshal_string() { 12 data := []byte(`"gojay"`) 13 var str string 14 err := gojay.Unmarshal(data, &str) 15 if err != nil { 16 log.Fatal(err) 17 } 18 fmt.Println(str) // true 19 } 20 21 func ExampleUnmarshal_bool() { 22 data := []byte(`true`) 23 var b bool 24 err := gojay.Unmarshal(data, &b) 25 if err != nil { 26 log.Fatal(err) 27 } 28 fmt.Println(b) // true 29 } 30 31 func ExampleUnmarshal_invalidType() { 32 data := []byte(`"gojay"`) 33 someStruct := struct{}{} 34 err := gojay.Unmarshal(data, &someStruct) 35 36 fmt.Println(err) // "Cannot unmarshal JSON to type '*struct{}'" 37 } 38 39 func ExampleDecoder_Decode_string() { 40 var str string 41 dec := gojay.BorrowDecoder(strings.NewReader(`"gojay"`)) 42 err := dec.Decode(&str) 43 dec.Release() 44 45 if err != nil { 46 log.Fatal(err) 47 } 48 fmt.Println(str) // "gojay" 49 } 50 51 func ExampleDecodeObjectFunc() { 52 reader := strings.NewReader(`{ 53 "name": "John Doe", 54 "email": "john.doe@email.com" 55 }`) 56 dec := gojay.NewDecoder(reader) 57 58 user := struct { 59 name string 60 email string 61 }{} 62 dec.DecodeObject(gojay.DecodeObjectFunc(func(dec *gojay.Decoder, k string) error { 63 switch k { 64 case "name": 65 return dec.String(&user.name) 66 case "email": 67 return dec.String(&user.email) 68 } 69 return nil 70 })) 71 72 fmt.Printf("User\nname: %s\nemail: %s", user.name, user.email) 73 74 // Output: 75 // User 76 // name: John Doe 77 // email: john.doe@email.com 78 } 79 80 func ExampleDecodeArrayFunc() { 81 reader := strings.NewReader(`[ 82 "foo", 83 "bar" 84 ]`) 85 dec := gojay.NewDecoder(reader) 86 87 strSlice := make([]string, 0) 88 err := dec.DecodeArray(gojay.DecodeArrayFunc(func(dec *gojay.Decoder) error { 89 var str string 90 if err := dec.AddString(&str); err != nil { 91 return err 92 } 93 strSlice = append(strSlice, str) 94 return nil 95 })) 96 97 if err != nil { 98 log.Fatal(err) 99 } 100 101 fmt.Print(strSlice) 102 // Output: 103 // [foo bar] 104 } 105 106 func ExampleNewDecoder() { 107 reader := strings.NewReader(`"gojay"`) 108 dec := gojay.NewDecoder(reader) 109 110 var str string 111 err := dec.DecodeString(&str) 112 if err != nil { 113 log.Fatal(err) 114 } 115 116 fmt.Println(str) 117 // Output: 118 // gojay 119 } 120 121 func ExampleBorrowDecoder() { 122 reader := strings.NewReader(`"gojay"`) 123 dec := gojay.BorrowDecoder(reader) 124 defer dec.Release() 125 126 var str string 127 err := dec.DecodeString(&str) 128 if err != nil { 129 log.Fatal(err) 130 } 131 132 fmt.Println(str) 133 // Output: 134 // gojay 135 } 136 137 func ExampleDecoder_DecodeBool() { 138 reader := strings.NewReader(`true`) 139 dec := gojay.NewDecoder(reader) 140 141 var b bool 142 err := dec.DecodeBool(&b) 143 if err != nil { 144 log.Fatal(err) 145 } 146 147 fmt.Println(b) 148 // Output: 149 // true 150 }