go json struct map之間轉換

2021-10-06 17:34:55 字數 2778 閱讀 1723

文中所有**,可以在下邊鏈結頁面執行驗證。

package main

import (

"encoding/json"

"fmt"

)// 結構體欄位首字母必須要大寫,否則外部無法訪問,json轉struct也轉不成功

type person struct

func main()

func testjson2struct()

`var person person

json.unmarshal(byte(jsonstr), &person)

fmt.println("person:", person)

}

輸出結果

person:

package main

import (

"encoding/json"

"fmt"

)// 結構體欄位首字母必須要大寫,否則外部無法訪問,json轉struct也轉不成功

type person struct

func main()

func teststruct2json()

fmt.println("p:", p)

// person結構體轉化為對應的json

jsonbytes, err := json.marshal(p)

if err != nil

fmt.println("json串:", string(jsonbytes))

}

輸出結果

p: 

json串:

package main

import (

"encoding/json"

"fmt"

)func main()

func testjson2map() `

// 定義map

var mapres map[string]inte***ce{}

// json轉map

if err := json.unmarshal(byte(jsonstr), &mapres); err != nil

fmt.println("mapres:", mapres)

}

輸出結果

mapres: map[age:18 name:xuxiaobai]
package main

import (

"encoding/json"

"fmt"

)func main()

func testmap2json() )

testmap["name"] = "xuxiaobai"

testmap["age"] = 18

testmap["address"] = "北京"

jsonbytes, err := json.marshal(testmap)

if err != nil

fmt.println("testmap轉換成的json串:", string(jsonbytes))

}

輸出結果

testmap轉換成的json串:
轉換用到的方法:

比mapstructure要好用,mapstructure有些字段轉換會失敗。

引數介紹:

testmap["address"] = "北京"

var person person

// map轉struct

if err := gconv.struct(testmap, &person); err != nil

fmt.println("map轉換struct結果:", person)

}輸出結果

map轉換struct結果:
參考:struct轉換

package main

import (

"fmt"

"reflect"

)type person struct

func main()

pmap := teststruct2map(p)

fmt.println("struct轉map結果:", pmap)

}func teststruct2map(obj inte***ce{}) map[string]inte***ce{} )

for i := 0; i < t.numfield(); i++

return data

}

輸出結果

struct轉map結果: map[address:上海 age:20 name:zhangsan]

char, WCHAR, CString之間的轉換

1.char wchar multibytetowidechar int convertchartowchar char pmultibytestr,wchar pwidecharstr,size t bytesofwidecharstr 2.wchar char widechartomultiby...

CvMat Mat IplImage之間的轉換

opencv中常見的與影象操作有關的資料容器有mat,cvmat和iplimage,他們都可以顯示影象,但是,mat型別側重於計算,數學性較高。而cvmat和iplimage型別更側重於 影象 在opencv2.0之前,opencv的庫函式是完全用c實現的。其中mat是opencv和c 的介面矩陣類...

Gbps Mbps Bps bps之間的進製轉換

首先要講述下位 bit 與位元組 b 的區別 二者有著本質的區別應該注意 1b 1bit 1b 1b 也就是我們常說的乙個位元組等於八位二進位制數網路傳輸速度單位 mbps 即 milionbit pro second 百萬位每秒 kbps 即 kilobit pro second 千位每秒 bps...