mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 04:48:29 +08:00
56 lines
1.0 KiB
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!
|
|
*/
|