Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Golang中的JSON字符串解码地图片段_Json_Go - Fatal编程技术网

从Golang中的JSON字符串解码地图片段

从Golang中的JSON字符串解码地图片段,json,go,Json,Go,下面,我将了解如何使用基本JSON字符串: package main import ( "encoding/json" "fmt" ) type Response struct { Page int `json:"page"` Fruits []string `json:"fruits"` } func main() { str := `{"page": 1, "fruits": ["apple", "peach"]}`

下面,我将了解如何使用基本JSON字符串:

package main

import (
    "encoding/json"
    "fmt"
    )

type Response struct {
    Page   int      `json:"page"`
    Fruits []string `json:"fruits"`
}

func main() {
    str := `{"page": 1, "fruits": ["apple", "peach"]}`
    res := Response{}
    json.Unmarshal([]byte(str), &res)
    fmt.Println(res.Page)
    fmt.Println(res.Fruits)
}

// the output looks good here:
// 1
// [apple peach]
我想给我正在解码的
str
数据对象增加一些复杂性

也就是说,我想添加一个键,它的值是一片贴图:

"activities": [{"name": "running"}, {"name", "swimming"}]
我的脚本现在看起来像下面的示例,但是,就我个人而言,我无法找出
响应
结构中的正确语法,以便获取
活动
中的值。我知道这种语法是不正确的:
Activities[]string…
,但我无法找到捕获我想要显示的数据的解决方案

package main

import (
    "encoding/json"
    "fmt"
    )

type Response struct {
    Page   int      `json:"page"`
    Fruits []string `json:"fruits"`
    Activities []string `json:"activities"`
}

func main() {
    str := `{"page": 1, "fruits": ["apple", "peach"], "activities": [{"name": "running"}, {"name", "swimming"}]}`
    res := Response{}
    json.Unmarshal([]byte(str), &res)
    fmt.Println(res.Page)
    fmt.Println(res.Fruits)
    fmt.Println(res.Activities)
}

// the script basically craps out here and returns:
// 0
// []
// []

谢谢你的帮助

使用[]映射[字符串]字符串:

type Response struct {
    Page   int      `json:"page"`
    Fruits []string `json:"fruits"`
    Activities []map[string]string `json:"activities"`
}

始终检查并处理错误。
示例JSON有一个语法错误,该错误在示例中已更正

使用[]映射[字符串]字符串:

type Response struct {
    Page   int      `json:"page"`
    Fruits []string `json:"fruits"`
    Activities []map[string]string `json:"activities"`
}

始终检查并处理错误。
示例JSON有一个语法错误,该错误在示例中已更正

我知道这是一个老版本,但我最近编写了一个实用程序,用于从json输入生成精确的go类型,类似的情况下,您可以对它进行旋转:

对于此特定示例,它从json生成:

{"page": 1, "fruits": ["apple", "peach"], "activities": [{"name": "running"}, {"name": "swimming"}]}
围棋类型:

type Object struct {
    Activities  []struct {
        Name string `json:"name"`
    }   `json:"activities"`
    Fruits  []string    `json:"fruits"`
    Page    int     `json:"page"`
}

我知道这是一个老版本,但我最近编写了一个实用程序,用于从json输入生成精确的go类型,类似的情况下,您可以对它进行旋转:

对于此特定示例,它从json生成:

{"page": 1, "fruits": ["apple", "peach"], "activities": [{"name": "running"}, {"name": "swimming"}]}
围棋类型:

type Object struct {
    Activities  []struct {
        Name string `json:"name"`
    }   `json:"activities"`
    Fruits  []string    `json:"fruits"`
    Page    int     `json:"page"`
}