Golang:如何解析同时获得特征和数据的json?

I got a dic data with {{"word name":"word meaning"},{"word name":"word meaning"},…} I want to parse to map of the words. I tried to write code with interface{} but i cant imagine how to. Thanks for reading.

For example:

package main

import (
    "encoding/json"
    "fmt"
)

var jsonText = []byte(`[
    {"Name": "Cat", "Meaning": "A Cat"},
    {"Name": "Dog", "Meaning": "A Dog"}
]`)

type Word struct {
    Name, Meaning string
}

func main() {
    var words []Word
    dict := make(map[string]string)
    if err := json.Unmarshal(jsonText, &words); err != nil {
        fmt.Println("error:", err)
    }
    for _, w := range words {
        dict[w.Name] = w.Meaning
    }
    fmt.Printf("%v", dict)
}

Produces:

map[Cat:A Cat Dog:A Dog]

Playground

If you have a way of changing first and last curly brace, to a square brackets, then you could do the following:

package main

import (
    "encoding/json"
    "fmt"
    "log"
)

func main() {

    var raw_list []map[string]string

    var jsonText = []byte(`[
        {"Cat": "small animal"},
        {"Cow": "Big animal"}
        ]`)

    err := json.Unmarshal(jsonText, &raw_list)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("raw_list : %s
", raw_list)

    new_map := make(map[string]string)

    for _, ele := range raw_list {
        for key, val := range ele {
            new_map[key] = val
        }
    }

    fmt.Printf("new_map %s
", new_map)
}

GoPlayground

Result:

raw_list : [map[Cat:small animal] map[Cow:Big animal]]
new_map map[Cat:small animal Cow:Big animal]

Your JSON should be like the following

{
    "word 1": "meaning 1",
    "word 2": "meaning 2"
}

to accomplish that you may use something like that

func fixJson(s string) string {
    s = strings.Replace(s, "{", "", -1)
    s = strings.Replace(s, "}", "", -1)
    return "{" + s + "}"
}

Full code

package main

import (
    "encoding/json"
    "strings"
    "fmt"
    "log"
)

func fixJson(s string) string {
    s = strings.Replace(s, "{", "", -1)
    s = strings.Replace(s, "}", "", -1)
    return "{" + s + "}"
}

func main() {

    var words map[string]string

    var text = `{
        {"word 1": "meaning 1"},
        {"word 2": "meaning 2"}
    }`

    var jsonText = []byte(fixJson(text))

    err := json.Unmarshal(jsonText, &words)

    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(words)
}

Playground