// Json1 project main.go
package main
import (
"encoding/json"
"fmt"
"os"
)
type response1 struct {
Page int
Data []string
}
type response2 struct {
Page int `json:"page"`
Data []string `json:"Name"`
}
func main() {
testBool, _ := json.Marshal(true)
fmt.Println("json testBool = ", string(testBool))
testInt, _ := json.Marshal(1)
fmt.Println("json testBool = ", string(testInt))
testFlot, _ := json.Marshal(1.22)
fmt.Println("json testFlot = ", string(testFlot))
testString, _ := json.Marshal("Here are some examples for atomic values")
fmt.Println("json testFlot = ", string(testString))
stestData := []string{"xml", "json", "protobuf"}
testSlice, _ := json.Marshal(stestData)
fmt.Println("json testSlice = ", string(testSlice))
mapData := map[string]int{"xml": 1, "json": 2, "protobuf": 3}
testMap, _ := json.Marshal(mapData)
fmt.Println("json testMap = ", string(testMap))
testStruct1Data := &response1{
Page: 1,
Data: []string{"C", "C#", "CPP", "JAVA", "PHP", "GO"}}
testStruct1, _ := json.Marshal(testStruct1Data)
fmt.Println("json testStruct1 = ", string(testStruct1))
testStruct2Data := &response2{
Page: 1,
Data: []string{"C", "C#", "CPP", "JAVA", "PHP", "GO"}}
testStruct2, _ := json.Marshal(testStruct2Data)
fmt.Println("json testStruct2 = ", string(testStruct2))
myTestJsonData := []byte(`{"fdata":12.34, "strData":["Json","XML","Protobuf"]}`)
var data map[string]interface{}
err := json.Unmarshal(myTestJsonData, &data)
if err != nil {
fmt.Println("json.Unmarshal error: ", err.Error())
os.Exit(-1)
}
fmt.Println(data)
fnum := data["fdata"].(float64)
fmt.Println("fnum = ", fnum)
strData := data["strData"].([]interface{})
fmt.Println("len(strData) = ", len(strData))
fmt.Println("strData = ", strData)
for i := 0; i < len(strData); i++ {
fmt.Println("strData[", i, "] = ", strData[i].(string))
}
strJsonData := `{"page":1,"Name":["C","C#","CPP","JAVA","PHP","GO"]}`
rsp2 := response2{}
json.Unmarshal([]byte(strJsonData), &rsp2)
fmt.Println("rsp2 = ", rsp2)
fmt.Println("rsp2.Page = ", rsp2.Page)
fmt.Println("rsp2.Data = ", rsp2.Data)
for i := 0; i < len(rsp2.Data); i++ {
fmt.Println("rsp2.Data[", i, "] = ", rsp2.Data[i])
}
enc := json.NewEncoder(os.Stdout)
d := map[string]int{"Go": 50, "C": 60, "CPP": 70, "JAVA": 80, "PHP": 90, "C#": 100}
enc.Encode(d)
enc.Encode(rsp2)
os.Exit(0)
}
// Json