Golang with JSON
	
		
		/codes/golang/json/main.go
		
	
		
	
	
package main
import (
	"encoding/json"
	"log"
)
func main() {
	jsonStr := `
	["one", "two"]
	`
	var array []string
	err := json.Unmarshal([]byte(jsonStr), &array)
	if err != nil {
		log.Println(err)
	} else {
		log.Println(array)
	}
}
数据格式转换
下面的例子中,可以将 JSON 中同一个字段不同数据类型统一转换为字符串格式
	
		
		/codes/golang/json-marshal/main.go
		
	
		
	
	
package main
import (
	"encoding/json"
	"fmt"
	"log"
	"strings"
)
var json_str = `{
	"value": "GOOD",
	"name":"name"
}`
var json_bool = `{
	"value": false,
	"name":"good"
}`
type Form struct {
	Value ComposeValue
	Name  string
}
type ComposeValue struct {
	Value string
}
func (f *ComposeValue) UnmarshalJSON(data []byte) error {
	originStr := strings.Trim(string(data), `"`)
	switch str := strings.ToLower(originStr); str {
	case "true":
		f.Value = "true"
	case "false":
		f.Value = "false"
	default:
		f.Value = originStr
	}
	return nil
}
func (f ComposeValue) MarshalJSON() ([]byte, error) {
	return json.Marshal(f.Value)
}
func (f ComposeValue) String() string {
	return f.Value
}
func main() {
	var data []byte
	var err error
	form := &Form{}
	if err := json.Unmarshal([]byte(json_str), form); err != nil {
		log.Fatal(err)
	}
	if data, err = json.Marshal(form); err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(data))
	if err := json.Unmarshal([]byte(json_bool), form); err != nil {
		log.Fatal(err)
	}
	data, _ = json.Marshal(form)
	fmt.Println(string(data))
}