上面都是使用的 UnMarshall 解析的 JSON 数据,如果 JSON 数据的载体是打开的文件或者 HTTP 请求体这种数据流(他们都是 io.Reader 的实现),我们不必把 JSON 数据读取出来后再去调用 encode/json 包的 UnMarshall 方法,包提供的 Decode 方法可以完成读取数据流并解析 JSON 数据最后填充变量的操作。
func ExampleDecoder() {
const jsonStream = `
{"Name": "Ed", "Text": "Knock knock."}
{"Name": "Sam", "Text": "Who's there?"}
{"Name": "Ed", "Text": "Go fmt."}
{"Name": "Sam", "Text": "Go fmt who?"}
{"Name": "Ed", "Text": "Go fmt yourself!"}
type Message struct {
Name, Text string
dec := json.NewDecoder(strings.NewReader(jsonStream))
for {
var m Message
if err := dec.Decode(&m); err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
fmt.Printf("%s: %s\n", m.Name, m.Text)
Go语言的转换go的string字符串格式转json格式确实有点麻烦,如果不知道json里面的类型好像就构建不了结构体了。package mainimport ( "encoding/json" "fmt")type Data struct { Status int `json:"status"` Msg int `json:"msg"`}func main() { msg := "{\"status\":200, \"msg\":18}" var da
Go 语言入门很简单 – Go 语言转化为 JSON
在日常工作中,除了需要从 JSON 转化为 Go 的数据结构。但往往相反的情况是:我们需要将数据以 JSON 字符串的形式发送到 Web 服务器。今天我们将学会如何从一个结构化数据编码为 JSON 。
结构体转为 JSON 格式
比如,我们有如下的结构体:
type Student struct {
Name string
Age int
Address Address
type Address struct {
m := make(map[string]string, 0)
m["phone"] = "15656565656"
json, err := json.Marshal(m)
if err != nil {
fmt.Printf("err:%v\n",err)
fmt.Printf("未转义字符串:%v\n",json)
strJson := strconv.Quote(string(json))
fmt.Printf("转义字符串:%v\n",strJs
1. 解析json字符串到结构体
将json字符串解析到结构体,因为这里的 common_policy_config 是json数组,没办法用字段来表示,所以需要用 []interface{} 来存。
package main
import (
"encoding/json"
"github.com/beego/beego/v2/adapter/logs"
type Request_common_policy_config struct {
Action stri
在存储的时候想把数据列表存储成json string,但是在代码使用的时候又觉得用map更快更方便。这个时候就需要相互转换,下面是一个转换的例子。
// Test for json and map converting
package main
import (
encoding/json
func main() {
jsonStr := `{ip: 127.0.0.1, device: ABESSF0023}`
// test json string to map
m, err := JsonToMap(jsonStr)
if err !=
1. 结构体到
json格式
1.1 简单
转换
基本的
Golang结构体
转换成
JSON格式数据,主要在结构体的相关字段中加入
json : "keyword"字段。具体做法如下:
type Structname struct{
feild1 Type1 `
json:"keyword1"`
feild2 Type2 `
json:"keyword2"`
相关具体实例如下:
package message
import (
"encoding/
json"
"log"
"testing"
在Go语言中,将字符串类型转换为map类型的最简单方法是使用json包的Unmarshal函数。首先,我们需要创建一个空的map变量,然后使用json.Unmarshal函数将字符串转换为该map变量。
下面是一个示例代码:
class_detail_map := make(map[string]string)
err := json.Unmarshal([]byte(class_detail), &class_detail_map)
if err != nil {
// 错误处理
其中,class_detail是一个包含JSON字符串的变量,class_detail_map是目标map变量。通过调用json.Unmarshal函数,将class_detail字符串转换为class_detail_map。
另外,还有一个第三方库xml2map可以用于将XML转换为map类型。使用该库需要先安装,可以通过执行`go get -u github.com/sbabiv/xml2map`命令进行安装。然后,可以使用该库提供的函数将XML字符串转换为map类型。
注意,无论是使用json.Unmarshal还是xml2map,都需要确保目标map的结构与字符串数据的结构一致。
总之,在Go语言中,可以使用json.Unmarshal函数将字符串转换为map类型。另外,也可以使用第三方库xml2map将XML转换为map类型。 <span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Go string 转map](https://blog.csdn.net/m0_67392182/article/details/123622930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [xml2map:XML到MAP转换器的Golang编写](https://download.csdn.net/download/weixin_42164931/15111372)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [Golang:类型转换-将map [string] string转换为map [someStruct] string](https://blog.csdn.net/weixin_39704314/article/details/118801877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]