2017-08-27 3 views
2

Here Sie diesen Code sehen:Mehrwert json.Marshal() in Einzelwert Kontext

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))) 
} 

, die diesen Fehler zurückgibt:

tmp/sandbox100532722/main.go:13:33: multiple-value json.Marshal() in single-value context. 

Wie kann ich dieses Problem beheben?

Antwort

5

Die Zeichenfolgenkonvertierung, die Sie ausführen möchten, erfordert ein einzelnes Argument, aber die Funktion json.Marshal gibt zwei zurück ([]byte und error). Sie müssen den ersten Rückgabewert speichern und dann die Konvertierung durchführen:

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)) 
}