为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕森王 2021-09-13 15:07:13
我得到了一个带有 {{"word name":"word meaning"},{"word name":"word meaning"},...} 的 dic 数据,我想解析为单词的映射。我尝试使用 interface{} 编写代码,但我无法想象该怎么做。谢谢阅读。
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

例如:


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)

}

产生:


地图[猫:一只猫狗:一只狗]


查看完整回答
反对 回复 2021-09-13
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

您的 JSON 应如下所示


{

    "word 1": "meaning 1",

    "word 2": "meaning 2"

}

为了实现这一点,您可以使用类似的东西


func fixJson(s string) string {

    s = strings.Replace(s, "{", "", -1)

    s = strings.Replace(s, "}", "", -1)

    return "{" + s + "}"

}

完整代码


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)

}


查看完整回答
反对 回复 2021-09-13
  • 3 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信