我有一个像这样的json文件
[{"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", "1.3"], ["10143.89", "0.003"], ["10142.79", "0.29554"], ["10141.57", "1.6"], ["10141.5", "0.01154149"], ["10141", "0.005"], ["10140", "0.1"], ["10138.88", "1.066"], ["10138.37", "0.07871087"], ["10137.63", "0.79331873"]], "asks": [["10167.67", "0.04447368"], ["10167.72", "0.001"], ["10168.6", "0.2"], ["10168.85", "2"], ["10169.19", "0.29501"], ["10170", "1.19"], ["10170.02", "3.33049225"], ["10172.12", "0.29496"], ["10172.87", "4.5"], ["10173.57", "0.123"], ["10173.64", "4.555"], ["10175.05", "0.29484"], ["10175.18", "4.4"], ["10176.04", "0.55440618"], ["10176.05", "4.1"], ["10176.43", "1.04"], ["10177.98", "0.29478"], ["10178.35", "4.1"], ["10178.37", "0.00463633"], ["10178.79", "1.3"], ["10178.94", "0.01"], ["10179", "0.04"], ["10179.07", "1"], ["10179.82", "0.004"], ["10179.84", "0.001"], ["10180", "1.50558876"], ["10180.02", "0.001"], ["10180.3", "8.1"], ["10180.91", "0.007"], ["10180.92", "0.29482"], ["10181.07", "2.2"], ["10181.67", "0.68359706"], ["10181.71", "0.0015"], ["10182.15", "0.01"], ["10182.41", "0.02"], ["10182.45", "0.004"], ["10182.54", "0.7766"], ["10183.82", "1.9"], ["10183.85", "0.29482"], ["10184", "0.001"], ["10184.31", "0.001"], ["10184.52", "0.0049976"], ["10184.74", "0.00231"], ["10185", "3.17362533"], ["10185.19", "2.5"], ["10185.37", "0.01"], ["10185.68", "1.1"], ["10185.82", "0.002"], ["10185.87", "0.04"], ["10186.41", "0.1721"]], "timestamp": "2020-02-10 00:00:07.665713"},{"sequence": 12188766096, "bids": [["10167.75", "0.2"], ["10167.74", "0.2"], ["10167.72", "5.98300001"], ["10167.71", "0.144"], ["10167.67", "4.1"], ["10167.66", "2.24"], ["10167.65", "0.016"], ["10165.59", "0.35773702"], ["10165.58", "4.036"], ["10164.46", "0.01"], ["10164.45", "5.714"], ["10164.3", "2.2"], ["10163.48", "0.27"], ["10163.47", "4.5"], ["10163.09", "0.024"], ["10162.19", "0.761"], ["10162.17", "3.999"], ["10162.16", "2.4"], ["10161.31", "0.00771652"], ["10161.28", "0.7959"], ["10160.56", "0.04"], ["10160", "3.47279335"], ["10159.99", "0.0011"], ["10159.88", "1.5"], ["10159", "0.20869106"], ["10158.03", "0.004"], ["10157.45", "0.29534"], ["10156.98", "1.6"], ["10156.81", "0.3"], ["10155", "0.1"], ["10154.54", "8.1"], ["10154.52", "0.29542"], ["10154.15", "2.17"], ["10153.59", "0.3"], ["10151.81", "0.197009"], ["10151.58", "1.4055"], ["10150", "0.77685084"], ["10149.99", "0.00104364"], ["10149.69", "1.85"], ["10149", "0.084409"], ["10148.65", "0.29554"], ["10146.54", "1.88"], ["10145.74", "0.1721"], ["10145.72", "0.29554"], ["10145", "0.005"], ["10143.94", "1.3"], ["10143.89", "0.003"], ["10142.79", "0.29554"], ["10141.5", "0.01154149"], ["10141.23", "0.171076"]], "asks": [["10170", "1.18190554"], ["10170.02", "3.33049225"], ["10173.64", "4.555"], ["10174.2", "0.2"], ["10175.05", "0.29484"], ["10175.18", "4.1"], ["10176.04", "0.55440618"], ["10176.05", "4.1"], ["10177.4", "1"], ["10177.46", "1.12603391"], ["10177.67", "4.5"], ["10177.98", "0.29478"], ["10178.35", "4.1"], ["10178.37", "0.001"], ["10178.79", "1.3"], ["10178.94", "0.01"], ["10179", "0.04"], ["10179.21", "0.3"], ["10179.82", "0.004"], ["10179.84", "0.001"], ["10180", "1.50558876"], ["10180.02", "0.001"], ["10180.8", "0.83971639"], ["10180.91", "0.007"], ["10180.92", "0.29482"], ["10181.07", "2.2"], ["10181.67", "0.68359706"], ["10181.71", "0.0015"], ["10182.15", "0.01"], ["10182.41", "0.02"], ["10182.45", "0.004"], ["10183.82", "1.9"], ["10183.85", "0.29482"], ["10184", "0.001"], ["10184.31", "0.001"], ["10184.52", "0.0049976"], ["10184.74", "0.00231"], ["10185", "3.17362533"], ["10185.19", "2.5"], ["10185.37", "0.01"], ["10185.68", "1.1"], ["10185.82", "0.002"], ["10185.87", "0.04"], ["10186.41", "0.1721"], ["10186.54", "0.0015"], ["10186.6", "8.1"], ["10186.78", "0.29482"], ["10186.97", "0.008"], ["10187", "0.15"], ["10187.21", "0.02041222"]], "timestamp": "2020-02-10 00:00:17.702649"},{"sequence": 12188769568, "bids": [["10174.75", "0.016"], ["10174.39", "2"], ["10174.38", "0.2"], ["10170.66", "4.5"], ["10170", "0.35758237"], ["10169.99", "7.825"], ["10169.85", "0.024"], ["10169.61", "1.74"], ["10168.53", "0.88915013"], ["10167.68", "0.40823914"], ["10167.67", "36.80084511"], ["10167.66", "0.036"], ["10167.64", "0.686"], ["10167.5", "0.04"], ["10167.48", "1.8"], ["10166.42", "0.3"], ["10165.58", "4.036"], ["10164.3", "2.2"], ["10163.33", "0.8008"], ["10163.04", "0.579"], ["10162.17", "3.999"], ["10162.16", "2.4"], ["10161.73", "8.1"], ["10161.31", "0.00771652"], ["10160.53", "0.119"], ["10160.39", "0.196843"], ["10160.38", "0.29522"], ["10160", "3.47279335"], ["10159.99", "0.0011"], ["10159.88", "1.5"], ["10159", "0.20869106"], ["10158.03", "0.004"], ["10157.45", "0.29534"], ["10156.98", "1.6"], ["10155", "0.1"], ["10154.52", "0.29542"], ["10154.25", "0.92941369"], ["10154.15", "2.17"], ["10153.1", "1.20082209"], ["10152.11", "0.1668"], ["10151.73", "2.1"], ["10151.58", "0.2955"], ["10150", "0.77685084"], ["10149.99", "0.00104364"], ["10149.97", "0.084409"], ["10149.2", "1.9"], ["10148.65", "0.29554"], ["10148.11", "1.066"], ["10145", "0.005"], ["10144.74", "14.73320213"]], "asks": [["10175.48", "0.46015637"], ["10175.49", "4"], ["10177.35", "6.1"], ["10177.4", "6.1"], ["10178.85", "1.00995404"], ["10178.94", "0.01"], ["10178.97", "0.2"], ["10179", "0.04"], ["10179.09", "0.06477417"], ["10179.82", "0.004"], ["10179.84", "0.001"], ["10180", "1.50558876"], ["10180.02", "0.001"], ["10180.91", "0.007"], ["10181.67", "0.68359706"], ["10181.71", "0.0015"], ["10181.76", "0.00520665"], ["10182.15", "0.01"], ["10182.41", "0.02"], ["10182.45", "0.004"], ["10183.39", "1.83"], ["10183.85", "0.29461"], ["10184", "0.001"], ["10184.31", "0.001"], ["10184.52", "0.0049976"], ["10184.74", "0.00231"], ["10184.87", "4.5"], ["10185", "3.17362533"], ["10185.16", "0.3"], ["10185.19", "2.5"], ["10185.37", "0.01"], ["10185.8", "1.62"], ["10185.82", "0.002"], ["10185.87", "0.04"], ["10186.18", "0.92941369"], ["10186.52", "0.3575008"], ["10186.54", "0.0015"], ["10186.78", "0.29482"], ["10186.97", "0.008"], ["10187", "0.15"], ["10188", "0.02"], ["10188.39", "1.69"], ["10188.4", "0.0049957"], ["10188.59", "0.01"], ["10188.85", "0.3"], ["10189", "0.56"], ["10189.29", "0.001"], ["10189.4", "0.01559953"], ["10189.95", "0.00245026"], ["10190", "0.05726459"]], "timestamp": "2020-02-10 00:00:27.738108"}]
我希望float32
在解组期间将内部出价数组转换为。在这里找到了一堆答案。有些涉及使用“,string”标签。虽然,尚不清楚如何将其用于嵌套切片。我在 golang docs 中看到了一个示例,该示例用于json.RawMessage
将解组为未编组的 json。无论如何,我真的很感激你在这里的指点。现在我有这个,这不是我想要的
package main
import (
"encoding/json"
"fmt"
)
// DataPointCoinbase - defines the ob coinbase data point
type DataPointCoinbase struct {
Sequence int32 `json:"sequence"`
Bids [][]json.Number `json:"bids"`
Asks [][]json.Number `json:"asks"`
Timestamp string `json:"timestamp"`
}
// ParseCoinbase - parses coinbase orderbook file
func main() {
data := []byte(`[
{
"sequence": 12188764183,
"bids": [
["10167.66", "0.91182063"],
["10167.65", "0.016"],
["10164.46", "0.35778977"]
],
"asks": [
["10167.66", "0.91182063"],
["10167.65", "0.016"],
["10164.46", "0.35778977"]
],
"timestamp": "2020-02-10 00:00:07.665713"}
]`)
var dataPoints []DataPointCoinbase
json.Unmarshal(data, &dataPoints)
fmt.Println(dataPoints)
}
一种方法是,您可以编写辅助方法来在输入的每个深度进行转换。您的情况的唯一区别是除了进行类型断言之外,在端点我们还必须解析字符串。以下是示例方法:
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 不同,您可以根据需要编写更多方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句