我有这样的 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”中的所有值进行范围,你能帮我吗?我想我错过了一些东西......
如果您阅读的文档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
归档时间: |
|
查看次数: |
2828 次 |
最近记录: |