1 回答

TA贡献1827条经验 获得超9个赞
一种方法是,您可以编写辅助方法来在输入的每个深度进行转换。在您的情况下,唯一的区别是除了进行类型断言之外,在端点我们还必须解析字符串。以下是示例方法:
package main
import "fmt"
type Slice []interface{}
type Map map[string]interface{}
func (a Slice) A(n int) Slice {
return a[n].([]interface{})
}
func (a Slice) M(n int) Map {
return a[n].(map[string]interface{})
}
func (m Map) A(s string) Slice {
return m[s].([]interface{})
}
func (a Slice) N(n int) float32 {
var f float32
fmt.Sscan(a[n].(string), &f)
return f
}
和示例用法:
package main
import (
"encoding/json"
"fmt"
"log"
"os"
)
func main() {
o, e := os.Open("a.json")
if e != nil {
log.Fatal(e)
}
a := Slice{}
json.NewDecoder(o).Decode(&a)
n := a.M(0).A("bids").A(0).N(0)
fmt.Println(n == 10167.66)
}
如果您的 JSON 不同,您可以根据需要编写更多方法。
- 1 回答
- 0 关注
- 117 浏览
添加回答
举报