将嵌套字符串切片解组为 float32

我有一个像


[{"sequence": 12188764183, "bids": [["10167.66", "0.91182063"], ["10167.65", "0.016"], ["10164.46", "0.35778977"], ["10164.45", "5.714"], ["10164.01", "0.2"], ["10163.5", "0.01"], ["10163.49", "4.597"], ["10162.19", "0.761"], ["10162.17", "3.999"], ["10162.16", "2.4"], ["10161.93", "0.024"], ["10161.31", "0.00771652"], ["10160.07", "0.27"], ["10160", "3.47279335"], ["10159.99", "0.0011"], ["10159.88", "1.5"], ["10159", "0.20869106"], ["10158.79", "0.04"], ["10158.67", "4.5"], ["10158.03", "0.004"], ["10157.59", "0.725"], ["10156.99", "0.7893"], ["10156.98", "1.6"], ["10155", "0.1"], ["10154.52", "0.29542"], ["10154.15", "2.17"], ["10153.59", "0.3"], ["10151.58", "1.4055"], ["10151.2", "0.123"], ["10150", "0.77685084"], ["10149.99", "0.00104364"], ["10149.69", "1.85"], ["10148.66", "0.19707"], ["10148.65", "0.29554"], ["10148.27", "8.1"], ["10148.17", "0.084409"], ["10146.54", "1.88"], ["10145.74", "0.1721"], ["10145.72", "0.29554"], ["10145", "0.005"], ["10143.94", 

我想float32在解组期间将内部出价数组转换为。在这里找到一堆答案。有些涉及使用“,字符串”标签。虽然,尚不清楚如何将其用于嵌套切片。我在 golang 文档中看到了一个示例,该示例用于json.RawMessage解组为未编组的 json。无论如何,我真的很感激你在这里的指点。现在我有这个,这不是我想要的


package main


import (

    "encoding/json"

    "fmt"

)


隔江千里
浏览 118回答 1
1回答

素胚勾勒不出你

一种方法是,您可以编写辅助方法来在输入的每个深度进行转换。在您的情况下,唯一的区别是除了进行类型断言之外,在端点我们还必须解析字符串。以下是示例方法:package mainimport "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 mainimport (   "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 不同,您可以根据需要编写更多方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go