[笔记] Golang 处理JSON

  1 package main
  2
  3 import (
  4     "encoding/json"
  5     "fmt"
  6 )
  7
  8 /*
  9
 10 GO类型和JSON类型的对应关系
 11 • bool 代表 JSON booleans,
 12 • float64 代表 JSON numbers,
 13 • string 代表 JSON strings,
 14 • nil 代表 JSON null.
 15
 16 三方开源库:
 17 https://github.com/bitly/go-simplejson
 18 */
 19
 20 type Server struct {
 21     ServerName string
 22     ServerIP   string
 23 }
 24
 25 type Serverslice struct {
 26     Servers []Server
 27 }
 28
 29 type Server2 struct {
 30     ServerName string `json:"serverName"`
 31     ServerIP   string `json:"serverIP"`
 32 }
 33
 34 type Serverslice2 struct {
 35     Servers []Server2 `json:"servers"`
 36 }
 37
 38 func main() {
 39     fmt.Println("********************")
 40     jsonUnmarshal()
 41     fmt.Println("********************")
 42     jsonUnmarshal2()
 43     fmt.Println("********************")
 44     jsonMarshal()
 45     fmt.Println("********************")
 46     jsonMarshal2()
 47 }
 48
 49 func jsonUnmarshal() {
 50     var s Serverslice
 51     str := `{"servers":
 52             [{"serverName":"Shanghai_VPN","serverIP":"127.0.0.1"},
 53             {"serverName":"Beijing_VPN","serverIP":"127.0.0.2"}]}`
 54     json.Unmarshal([]byte(str), &s)
 55     fmt.Println(s)
 56 }
 57
 58 func jsonUnmarshal2() {
 59     b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`)
 60     var f interface{}
 61     json.Unmarshal(b, &f)
 62     m := f.(map[string]interface{})
 63     for k, v := range m {
 64         switch vv := v.(type) {
 65         case string:
 66             fmt.Println(k, "is string", vv)
 67         case int:
 68             fmt.Println(k, "is int", vv)
 69         case float64:
 70             fmt.Println(k, "is float64", vv)
 71         case []interface{}:
 72             fmt.Println(k, "is an array:")
 73             for i, u := range vv {
 74                 fmt.Println(i, u)
 75             }
 76         default:
 77             fmt.Println(k, "is of a type i don‘t konw how handle")
 78         }
 79     }
 80 }
 81
 82 func jsonMarshal() {
 83     var s Serverslice
 84     s.Servers = append(s.Servers, Server{ServerName: "Shanghai_VPN", ServerIP: "127.0.0.1"})
 85     s.Servers = append(s.Servers, Server{ServerName: "Beijing_VPN", ServerIP: "127.0.0.2"})
 86     b, err := json.Marshal(s)
 87     if err != nil {
 88         fmt.Println("json err:", err)
 89     }
 90     fmt.Println(string(b))
 91 }
 92
 93 func jsonMarshal2() {
 94     var s Serverslice2
 95     s.Servers = append(s.Servers, Server2{ServerName: "Shanghai_VPN", ServerIP: "127.0.0.1"})
 96     s.Servers = append(s.Servers, Server2{ServerName: "Beijing_VPN", ServerIP: "127.0.0.2"})
 97     b, err := json.Marshal(s)
 98     if err != nil {
 99         fmt.Println("json err:", err)
100     }
101     fmt.Println(string(b))
102 }
时间: 2024-10-24 04:52:27

[笔记] Golang 处理JSON的相关文章

Go_14:GoLang中 json、map、struct 之间的相互转化

1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母必须为大写.请看下面的例子: package commontest import ( "testing" "encoding/json" ) type Person struct { name string age int } func TestStruct2Json(

Golang高性能json包:easyjson

简介 easyjson是什么呢? 根据官网介绍,easyjson是提供高效快速且易用的结构体structs<-->json转换包.easyjson并没有使用反射方式实现,所以性能比其他的json包该4-5倍,比golang 自带的json包快2-3倍. easyjson目标是维持生成去代码简单,以致于它可以轻松地进行优化或固定. 安装 go get -u github.com/mailru/easyjson/go install  github.com/mailru/easyjson/easy

golang的json操作

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 `

Golang 处理 Json(一):编码

JSON 是一种数据格式描述语言.以 key 和 value 构成的哈系结构,类似 Javascript 中的对象,python 中的字典.通常 json 格式的 key 是字符串,其值可以是任意类型,字串,数字,数组或者对象结构.更多关于 Json 的可以访问 JSON 了解. 数据结构 map json 源于 Javascript 的对象结构,golang 中有直接对应的数据结构 map,可是 golang 的 map 也是 key-value 结构,同时 struct 结构体也可以描述 j

golang的json操作[转]

package main import (     "encoding/json"     "fmt"     "os" ) type ConfigStruct struct {     Host              string   `json:"host"`     Port              int      `json:"port"`     AnalyticsFile     str

golang time json mongodb 时间处理

golang 中解决前端time 输出,后端mongodb中时间存储. package mask import ( "fmt" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/bsontype" ) // Timestamp extension time type Timestamp struct { Time time.T

WP8.1开发笔记一:JSON数据处理

一:创建一个普通的WP8.1应用 二:在解决方案选中项目,右击 “添加NuGet应用”,添加 json.net 三:把抓包的JSON地址,处理一下 JSON格式在线校对:http://www.bejson.com/go.html?u=http://www.bejson.com/jsonviewernew/ JSON生成C#类:http://tools.wx6.org/json2csharp/ 四:输入相关的代码并且和前台页面绑定在一块: 后台页面的代码: using System; using

golang http json http://www.alexedwards.net/blog/golang-response-snippets

http://www.alexedwards.net/blog/golang-response-snippets https://gist.github.com/andreagrandi/97263aaf7f9344d3ffe6 https://talks.golang.org/2012/simple/webfront/main.go https://stevenwhite.com/building-a-rest-service-with-golang-2/

Android学习笔记之Fast Json的使用

PS:最近这两天发现了Fast Json 感觉实在是强大.. 学习内容: 1.什么是Fast Json 2.如何使用Fast Json 3.Fast Json的相关原理 4.Fast Json的优势,以及为什么推荐使用Fast Json 1.Fast Json的相关介绍   说道Json想必我们都不陌生,数据传输的两种形式之一,另一种就是我们的xml了.不过现在更多的还是使用基于Json的格式来进行数据传输,Java的api接口为我们提供了相关的api接口用于对Json数据进行处理,如何将数据打