1 回答

TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊
這不是最好的解決方案,但它是最簡單的:
由于 JSON 輸入不是方便的鍵值對(或它的數(shù)組),我們不能只使用簡單的struct(這是可取的)來建模內(nèi)容。
您的 JSON 輸入是一個數(shù)組數(shù)組。里面有混合類型,所有類型都可以存儲在空接口中interface{}(可以保存任何類型的值)。
因此,您可以使用以下類型表示您的數(shù)據(jù)結(jié)構(gòu):
js := [][]interface{}{}
這是解組并打印它的完整代碼:
js := [][]interface{}{}
err := json.Unmarshal([]byte(input), &js)
if err != nil {
panic(err)
}
fmt.Printf("%q", js)
輸出(包裝):
[["client_connected" map["server_token":<nil> "id":<nil> "channel":<nil>
"user_id":<nil> "data":map["connection_id":<nil>] "success":<nil> "result":<nil>]]]
在Go Playground上試一試。
筆記:
似乎我們可以通過interface{}為js變量使用類型來進(jìn)一步簡化它:
var js interface{}
它也可以工作,但在這種情況下,我們甚至需要類型斷言才能到達(dá)“包裝器”數(shù)組的元素,這將是一個后退。
- 1 回答
- 0 關(guān)注
- 199 瀏覽
添加回答
舉報