我在网上看到的每个示例都显示了构建数据结构的示例,然后将JSON编组为数据类型。问题是我得到的是JSON的大量转储,使用这种方法似乎很费力。
有没有办法采取大量的数据转储并将其解编为类似于对象的地图,其功能类似于json / maps?
我现在所拥有的就是这样...
var data map[interface{}]interface{}
err = json.Unmarshal(JSONDUMP, &data)
if err != nil { log.Fatal(err) }
Run Code Online (Sandbox Code Playgroud)
但是我不能这样称呼它
data["some"]["long"]["chain"]["of"]["lookups"]
(type interface {} does not support indexing)
Run Code Online (Sandbox Code Playgroud)
data := []byte(`{
"outter":{
"inner":{
"value1":"test"
}
}`)
Run Code Online (Sandbox Code Playgroud)
口诀:
jsonParsed, err := gabs.ParseJSON(data)
value, ok = jsonParsed.Path("outter.inner.value1").Data().(string)
Run Code Online (Sandbox Code Playgroud)
杰森:
v, _ := jason.NewObjectFromBytes(data)
value, _ := v.GetString("outter","inner","value1")
Run Code Online (Sandbox Code Playgroud)
总的来说,这是一个坏主意!但是,如果您确实需要,可以这样做:
package main
import (
"encoding/json"
"fmt"
)
func main() {
var anyJson map[string]interface{}
customJSON := []byte(`{"a": "text comes here", "b": {"c":10, "d": "more text"}}`)
json.Unmarshal(customJSON, &anyJson)
fmt.Println("a ==", anyJson["a"].(string))
b_temp := anyJson["b"].(map[string]interface{})
fmt.Println("c ==", b_temp["c"].(float64))
}
Run Code Online (Sandbox Code Playgroud)
..那么您可以使用任何类似的字段anyJson["a"].(string)-查看类型断言,有效是至关重要的
| 归档时间: |
|
| 查看次数: |
2541 次 |
| 最近记录: |