golang 字符串 json互换

jaydenZou1228 · · 651 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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)

    }

}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:jaydenZou1228

查看原文:golang 字符串 json互换

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

651 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传