单值上下文中的多值json.Marshal()

sen*_*rio 5 json go

在这里你可以看到这段代码:

package main

import (
    "fmt"
    "encoding/json"
)

func main() {
    map1 := map[string]map[string]interface{}{}
    map2 := map[string]interface{}{}
    map2["map2item"] = "map2item"
    map1["map2"] = map2
    fmt.Println(string(json.Marshal(map1)))
}
Run Code Online (Sandbox Code Playgroud)

返回此错误:

tmp/sandbox100532722/main.go:13:33: multiple-value json.Marshal() in single-value context.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Tim*_*per 11

您尝试执行的字符串转换需要一个参数,但该json.Marshal函数返回两个([]byteerror).您需要存储第一个返回值,然后执行转换:

package main

import (
    "fmt"
    "encoding/json"
)

func main() {
    map1 := map[string]map[string]interface{}{}
    map2 := map[string]interface{}{}
    map2["map2item"] = "map2item"
    map1["map2"] = map2
    b, err := json.Marshal(map1)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(b))
}
Run Code Online (Sandbox Code Playgroud)