]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/json: add example for RawMessage marshalling
authorCarlos C <uldericofilho@gmail.com>
Wed, 10 Aug 2016 14:24:11 +0000 (16:24 +0200)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 16 Aug 2016 00:22:47 +0000 (00:22 +0000)
Fixes #16648

Change-Id: I3ab21ab33ca3f41219de9518ac6a39f49131e5e5
Reviewed-on: https://go-review.googlesource.com/26692
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/encoding/json/example_test.go

index 555eff93c0ec38576b7f9d4d1e8772b6aec7ef60..e4dffd942d73b557ddf758a9a9ba0ffd9ef9e03d 100644 (file)
@@ -174,7 +174,7 @@ func ExampleDecoder_Decode_stream() {
 }
 
 // This example uses RawMessage to delay parsing part of a JSON message.
-func ExampleRawMessage() {
+func ExampleRawMessage_unmarshal() {
        type Color struct {
                Space string
                Point json.RawMessage // delay parsing until we know the color space
@@ -219,6 +219,30 @@ func ExampleRawMessage() {
        // RGB &{98 218 255}
 }
 
+// This example uses RawMessage to use a precomputed JSON during marshal.
+func ExampleRawMessage_marshal() {
+       h := json.RawMessage(`{"precomputed": true}`)
+
+       c := struct {
+               Header *json.RawMessage `json:"header"`
+               Body   string           `json:"body"`
+       }{Header: &h, Body: "Hello Gophers!"}
+
+       b, err := json.MarshalIndent(&c, "", "\t")
+       if err != nil {
+               fmt.Println("error:", err)
+       }
+       os.Stdout.Write(b)
+
+       // Output:
+       // {
+       //      "header": {
+       //              "precomputed": true
+       //      },
+       //      "body": "Hello Gophers!"
+       // }
+}
+
 func ExampleIndent() {
        type Road struct {
                Name   string