最新消息:一个只会PHP的程序员不是好搬砖的

golang的json操作 – 开心编码源

源码技术 时光弧线 604浏览 0评论
package main

import (
  "encoding/json"
  "fmt"
  "os"
)

type ConfigStruct struct {
  Host			  string   `json:"host"`
  Port			  int	  `json:"port"`
  AnalyticsFile	 string   `json:"analytics_file"`
  StaticFileVersion int	  `json:"static_file_version"`
  StaticDir		 string   `json:"static_dir"`
  TemplatesDir	  string   `json:"templates_dir"`
  SerTcpSocketHost  string   `json:"serTcpSocketHost"`
  SerTcpSocketPort  int	  `json:"serTcpSocketPort"`
  Fruits			[]string `json:"fruits"`
}

type Other struct {
  SerTcpSocketHost string   `json:"serTcpSocketHost"`
  SerTcpSocketPort int	  `json:"serTcpSocketPort"`
  Fruits		   []string `json:"fruits"`
}

func main() { 
  jsonStr := `{"host": "http://localhost:9090","port": 9090,"analytics_file": "","static_file_version": 1,"static_dir": "E:/Project/goTest/src/","templates_dir": "E:/Project/goTest/src/templates/","serTcpSocketHost": ":12340","serTcpSocketPort": 12340,"fruits": ["apple", "peach"]}`

  //json str 转map
  var dat map[string]interface{}
  if err := json.Unmarshal([]byte(jsonStr), &dat); err == nil {
    fmt.Println("==============json str 转map=======================")
    fmt.Println(dat)
    fmt.Println(dat["host"])
  }

  //json str 转struct
  var config ConfigStruct
  if err := json.Unmarshal([]byte(jsonStr), &config); err == nil {
    fmt.Println("================json str 转struct==")
    fmt.Println(config)
    fmt.Println(config.Host)
  }

  //json str 转struct(部份字段)
  var part Other
  if err := json.Unmarshal([]byte(jsonStr), &part); err == nil {
    fmt.Println("================json str 转struct==")
    fmt.Println(part)
    fmt.Println(part.SerTcpSocketPort)
  }

  //struct 到json str
  if b, err := json.Marshal(config); err == nil {
    fmt.Println("================struct 到json str==")
    fmt.Println(string(b))
  }

  //map 到json str
  fmt.Println("================map 到json str=====================")
  enc := json.NewEncoder(os.Stdout)
  enc.Encode(dat)

  //array 到 json str
  arr := []string{"hello", "apple", "python", "golang", "base", "peach", "pear"}
  lang, err := json.Marshal(arr)
  if err == nil {
    fmt.Println("================array 到 json str==")
    fmt.Println(string(lang))
  }

  //json 到 []string
  var wo []string
  if err := json.Unmarshal(lang, &wo); err == nil {
    fmt.Println("================json 到 []string==")
    fmt.Println(wo)
  }
}

转载请注明:53IT » golang的json操作 – 开心编码源

您必须 登录 才能发表评论!