Documentation
¶
Overview ¶
Examples of encoding and decoding assorted formats.
Example (EncodingJSONComplex) ¶
package main import ( "encoding/json" "fmt" "log" ) func main() { type Message struct { Id string From struct { Name string Id string } Message string Actions []struct { Name string Link string } Type string Created_time string Updated_time string } type ResponseData struct { Data []Message `json:"data"` } json_data := ` { "data": [ { "id": "X999_Y999", "from": { "name": "Tom Brady", "id": "X12" }, "message": "Looking forward to 2010!", "actions": [ { "name": "Comment", "link": "http://www.facebook.com/X999/posts/Y999" }, { "name": "Like", "link": "http://www.facebook.com/X999/posts/Y999" } ], "type": "status", "created_time": "2010-08-02T21:27:44+0000", "updated_time": "2010-08-02T21:27:44+0000" }, { "id": "X998_Y998", "from": { "name": "Peyton Manning", "id": "X18" }, "message": "Where's my contract?", "actions": [ { "name": "Comment", "link": "http://www.facebook.com/X998/posts/Y998" }, { "name": "Like", "link": "http://www.facebook.com/X998/posts/Y998" } ], "type": "status", "created_time": "2010-08-02T21:27:44+0000", "updated_time": "2010-08-02T21:27:44+0000" } ] } ` data := ResponseData{} json.Unmarshal([]byte(json_data), &data) for _, message := range data.Data { fmt.Println(message) } json_dump, dump_err := json.Marshal(data) if dump_err != nil { log.Fatal(dump_err) } fmt.Println(string(json_dump)) }
Output: {X999_Y999 {Tom Brady X12} Looking forward to 2010! [{Comment http://www.facebook.com/X999/posts/Y999} {Like http://www.facebook.com/X999/posts/Y999}] status 2010-08-02T21:27:44+0000 2010-08-02T21:27:44+0000} {X998_Y998 {Peyton Manning X18} Where's my contract? [{Comment http://www.facebook.com/X998/posts/Y998} {Like http://www.facebook.com/X998/posts/Y998}] status 2010-08-02T21:27:44+0000 2010-08-02T21:27:44+0000} {"data":[{"Id":"X999_Y999","From":{"Name":"Tom Brady","Id":"X12"},"Message":"Looking forward to 2010!","Actions":[{"Name":"Comment","Link":"http://www.facebook.com/X999/posts/Y999"},{"Name":"Like","Link":"http://www.facebook.com/X999/posts/Y999"}],"Type":"status","Created_time":"2010-08-02T21:27:44+0000","Updated_time":"2010-08-02T21:27:44+0000"},{"Id":"X998_Y998","From":{"Name":"Peyton Manning","Id":"X18"},"Message":"Where's my contract?","Actions":[{"Name":"Comment","Link":"http://www.facebook.com/X998/posts/Y998"},{"Name":"Like","Link":"http://www.facebook.com/X998/posts/Y998"}],"Type":"status","Created_time":"2010-08-02T21:27:44+0000","Updated_time":"2010-08-02T21:27:44+0000"}]}
Example (EncodingJSONSimple) ¶
package main import ( "encoding/json" "fmt" ) func main() { type Person struct { Id int Name string } json_data := `{"id": 1, "name": "John Doe"}` fmt.Println(json_data) person := Person{} json.Unmarshal([]byte(json_data), &person) fmt.Printf("person.Id\n// %d\n", person.Id) fmt.Printf("person.Name\n// %s\n", person.Name) }
Output: {"id": 1, "name": "John Doe"} person.Id // 1 person.Name // John Doe
Example (EncodingXMLBasic) ¶
package main import ( "encoding/xml" "fmt" "log" ) func main() { var xmlData = ` <?xml version="1.0" encoding="UTF-8"?> <letter> <title maxlength="10"> Quote Letter </title> <salutation limit="40">Dear Daniel,</salutation> <text>Thank you f or sending us the information on <emphasis>SDL Trados Studio 2009</emphasis>. We like your products and think they certainly represent the most powerful translation solution on the market. We especially like the <component translate="yes">XML Parser rules</component> options in the <component translate="no">XML</component> filter. It has helped us to set up support for our XML files in a flash. We have already downloaded the latest version from your Customer Center.</text> <title maxlength="40"> Quote Details </title> <text> We would like to order 50 licenses. Please send us a quote. Keep up the good work!</text> <greetings minlength="10">Yours sincerely,</greetings> <signature> Paul Smith</signature> <address translate="yes">Smith & Company Ltd.</address> <address translate="no">Smithtown</address> <weblink>http://www.smith-company-ltd.com</weblink> <logo alt="Logo of Smith and Company Ltd." address="http://www.smith-company-ltd.com/logo.jpg"/> </letter> ` type Letter struct { Title string `xml:"title"` Salutation string `xml:"salutation"` } var obj Letter err := xml.Unmarshal([]byte(xmlData), &obj) if err != nil { log.Fatal(err) } fmt.Println(obj.Title[1:6]) fmt.Println(obj.Salutation[0:4]) }
Output: Quote Dear
Example (EncodingXMLSlices) ¶
package main import ( "encoding/xml" "fmt" "log" ) func main() { var xmlData = ` <?xml version="1.0" encoding="UTF-8"?> <letter> <title maxlength="10"> Quote Letter </title> <salutation limit="40">Dear Daniel,</salutation> <text>Thank you f or sending us the information on <emphasis>SDL Trados Studio 2009</emphasis>. We like your products and think they certainly represent the most powerful translation solution on the market. We especially like the <component translate="yes">XML Parser rules</component> options in the <component translate="no">XML</component> filter. It has helped us to set up support for our XML files in a flash. We have already downloaded the latest version from your Customer Center.</text> <title maxlength="40"> Quote Details </title> <text> We would like to order 50 licenses. Please send us a quote. Keep up the good work!</text> <greetings minlength="10">Yours sincerely,</greetings> <signature> Paul Smith</signature> <address translate="yes">Smith & Company Ltd.</address> <address translate="no">Smithtown</address> <weblink>http://www.smith-company-ltd.com</weblink> <logo alt="Logo of Smith and Company Ltd." address="http://www.smith-company-ltd.com/logo.jpg"/> </letter> ` type Letter struct { Text []string `xml:"text"` } var obj Letter err := xml.Unmarshal([]byte(xmlData), &obj) if err != nil { log.Fatal(err) } for _, v := range obj.Text { fmt.Println(v[1:3]) } }
Output: ha We
Click to show internal directories.
Click to hide internal directories.