The JSON data like the following:
{\"xxx_xxx\":{\"asks\":[[0.00000315,1022.53968253],[0.00000328,200],[0.00000329,181.70008541]],\"bids\":[[0.00000254,2685.3
I believe it's because your arrays are structs in Go, but your JSON has arrays of arrays, which aren't the same. You'd want to change [0.00000315,1022.53968253]
to {"0": ##, "1": ##}
, so on and so forth.
Or, you can have a separate Go struct where Asks is an array of arrays of float64s, etc., but this would be less type safe since arrays could have more or less than 2 elements.
Now, in JS, array elements can be referenced by numerical keys and arrays can be treated as objects, but in JSON, objects and arrays are distinct.
EDIT: add quotations around key names, as specified by the comment below. My mistake :)
Asks and bids are array types not struct types.
Here is a working playground example
Below is an example that adds a Nums
type that has a One
and Two
method you can use since those seem to be the format you are expecting. You could add some error checking in these methods to ensure the format is correct too.,
type Depth struct {
XXX XXX `json:"xxx_xxx"`
}
type XXX struct {
Asks []Nums `json:"asks"`
Bids []Nums `json:"bids"`
}
type Nums []float64
func (n Nums) One() float64 {
if len(n) > 0 {
return n[0]
}
return 0
}
func (n Nums) Two() float64 {
if len(n) > 1 {
return n[1]
}
return 0
}