Versuchen dieses Arbeitscode (A):
package main
import (
"encoding/json"
"fmt"
)
type Item int
type response struct {
Items map[string]Item `json:"Items"`
Array []Item `json:"Array"`
}
func main() {
var d response
err := json.Unmarshal([]byte(`{"Items":{"A":1,"B":2,"C":3},"Array":[]}`), &d)
if err != nil {
panic(err)
}
fmt.Println(d)
}
output:
{map[C:3 A:1 B:2] []}
Versuchen Sie diesen Arbeitscode (B):
package main
import (
"encoding/json"
"fmt"
)
type Item int
type response struct {
Items map[string]Item `json:"Items"`
//Array []Item `json:"Array"`
}
func main() {
var d response
err := json.Unmarshal([]byte(`{"Items":{"A":1,"B":2,"C":3},"Array":[]}`), &d)
if err != nil {
panic(err)
}
fmt.Println(d)
}
Ausgang:
{map[C:3 A:1 B:2]}
Sie können json.Marshal
und json.Unmarshal
, wie dieser Arbeitscode (C) verwenden:
package main
import (
"encoding/json"
"fmt"
)
type Item int
type response struct {
Items map[string]Item `json:"Items"`
Array []Item `json:"Array"`
}
func main() {
var test = response{
Items: map[string]Item{"A": 1, "B": 2, "C": 3},
Array: []Item{},
}
body, err := json.Marshal(test)
if err != nil {
panic(err)
}
fmt.Println(string(body)) // {"Items":{"A":1,"B":2,"C":3},"Array":[]}
var d response
err = json.Unmarshal(body, &d)
if err != nil {
panic(err)
}
fmt.Println(d)
}
Ausgang:
{"Items":{"A":1,"B":2,"C":3},"Array":[]}
{map[A:1 B:2 C:3] []}
Sie können {"A":1,"B":2,"C":3}
-map[A:1 B:2 C:3]
und "[1,2,3]"
zu [1 2 3]
, wie dieser Arbeitscode (D) Abstellungs:
package main
import (
"encoding/json"
"fmt"
)
type Item int
type response1 map[string]Item
type response2 []Item
func main() {
var d response1
err := json.Unmarshal([]byte(`{"A":1,"B":2,"C":3}`), &d)
if err != nil {
panic(err)
}
fmt.Println(d) // map[A:1 B:2 C:3]
var d2 response2
err2 := json.Unmarshal([]byte(`[1,2,3]`), &d2)
if err2 != nil {
panic(err2)
}
fmt.Println(d2) // [1 2 3]
}
Ausgang:
map[A:1 B:2 C:3]
[1 2 3]
Bitte beachten Sie, was ich will ** ** dekodieren bestehende json und ich habe ** einen Schlüssel ** und ** zwei Typen ** des Wertes –
@Amd Bitte lesen Sie die Frage, bitte Array ist immer leer, es sollte leer sein 'map [string] Item {}' Objekt ist immer gefüllt, so sollte es gefüllt sein 'map [string] Item {...} ' –
@Amd sollte es" Array "oder" Objekt "in' one' Feld vom Typ 'map [string] Item decodieren. –