从文件解析未知的 JSON 并迭代到它

Bla*_*llo 4 json go

我有这样的 JSON:

{
    "store_name": "Barry's Farmer's Market",
    "foods": {
        "apple": "5.91",
        "peach": "1.84",
        "carrot": "6.44",
        "beans": "3.05",
        "orange": "5.75",
        "cucumber": "6.42"
    },
    "store_location": "Corner of Elm Tree Hill and 158th Street"
} 
Run Code Online (Sandbox Code Playgroud)

我想使用以下命令将其解析为未知的 JSON map[string]interface{}

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    var parsed map[string]interface{}

    f, err := ioutil.ReadFile("input.txt")
    if err != nil {
        fmt.Printf("Error: %v", err)
        os.Exit(1)
    }

    err = json.Unmarshal(f, &parsed)
    for k, v := range parsed {
        //fmt.Println(parsed["foods"])
        fmt.Println(k + string(v))
    }

}
Run Code Online (Sandbox Code Playgroud)

考虑到“v”不会转换为字符串,并且我想对“foods”中的所有值进行范围,你能帮我吗?我想我错过了一些东西......

Adr*_*ian 5

如果您阅读的文档json.Unmarshal,您可以看到它将使用什么类型,并以此为基础编写代码;或用于fmt.Printf("%T",v)在运行时查看它是什么类型。

err = json.Unmarshal(f, &parsed)
for k, v := range parsed["foods"].(map[string]interface{}) {
    fmt.Println(k, v)
}
Run Code Online (Sandbox Code Playgroud)

工作操场示例:https : //play.golang.org/p/nczV5qA41h