// json_xml_case.go package main import ( "encoding/json" "encoding/xml" "fmt" "log" "strings" ) type thing struct { Field1 int Field2 string } func main() { x := `423hello from xml` 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! */