0
我有JSON,看起來像這樣:如何解析兩種不同的數據類型JSON數組到一個結構中Golang
{
"a": [
[
"12.58861425",
10.52046452
],
[
"12.58861426",
4.1073
]
]
"b": [
[
"12.58861425",
10.52046452
],
[
"12.58861426",
4.1073
]
]
"c": "true"
"d": 1234
}
我想解組到我創建了一個結構如下:
type OrderBook struct {
\t A [][2]float32 `json:"a"`
\t B [][2]float32 `json:"b"`
C string `json:"c"`
\t D uint32 `json:"d"`
}
//Note this won't work because the JSON array contains a string and a float value pair rather than only floats.
通常我會再轉換這個JSON成一個struct在Golang像這樣:
orders := new(OrderBook)
err = json.Unmarshal(JSON, &orders)
既然不能定義類型結構相匹配的JSON這是不行的。做一些閱讀,我認爲解組入界面,然後通過類型檢查使用界面數據可能是一個解決方案。
我正在朝着正確的方向前進嗎?
一個模板展示瞭如何在界面中使用數據的過程中真的有所幫助。
我會建議反編組到接口,有相同的問題更簡單的解決方案。這裏有幾條建議可能會讓你朝着適當的解決方案邁進。因此,一種選擇是提供'UnmarshalJSON'的定製實現(https://gist.github.com/mdwhatcott/8dd2eef0042f7f1c0cd8),您將在其中提供自定義邏輯以將字符串轉換爲雙精度。另一個將保持一切都一樣,但只是將這些內部數組定義爲一個'[] interface {}'。你也可以在此之後進行轉換,只是我會建議儘可能具體。 – evanmcdonnal
對我來說,最好是讓你製作標準的JSON。生成JSON的人是外部程序還是程序? – Apin
我同意,如果你能控制json的結構,那還會更好。但是,通常情況下你不這樣做,所以你可以使用我的答案。 – Dale