Files
the-way-to-go_ZH_CN/eBook/examples/chapter_12/json_xml_case.go

56 lines
1.0 KiB
Go

// json_xml_case.go
package main
import (
"encoding/json"
"encoding/xml"
"fmt"
"log"
"strings"
)
type thing struct {
Field1 int
Field2 string
}
func main() {
x := `<x><field1>423</field1><field2>hello from xml</field2></x>`
j := `{"field1": 423, "field2": "hello from json"}`
tx := thing{}
if err := xml.Unmarshal(strings.NewReader(x), &tx); err != nil {
log.Fatalf("Error unmarshaling XML: %v", err)
}
tj := thing{}
if err := json.Unmarshal([]byte(j), &tj); err != nil {
log.Fatalf("Error unmarshaling JSON: %v", err)
}
fmt.Printf("From JSON: %#v\n", tj)
fmt.Printf("From XML: %#v\n", tx)
}
/* Output with
type thing struct {
Field1 int
Field2 string
}:
From XML: main.thing{Field1:0, Field2:""} // All matching is case sensitive!
From JSON: main.thing{Field1:423, Field2:"hello from json"}
Output with
type thing struct {
field1 int
field2 string
}:
2012/02/22 10:51:11 Error unmarshaling JSON: json: cannot unmarshal object
field1" into unexported field field1 of type main.thing
JSON uses reflection to unmarshal!
*/