我正在寫一個websocket客戶端。我從服務器接收以下JSON:如何訪問深層嵌套的JSON鍵和值
{"args":[{"time":"2013-05-21 16:57:17"}],"name":"send:time"}
我試圖訪問time
參數,但就是無法掌握如何深伸入接口類型:
package main;
import "encoding/json"
import "log"
func main() {
msg := `{"args":[{"time":"2013-05-21 16:56:16", "tzs":[{"name":"GMT"}]}],"name":"send:time"}`
u := map[string]interface{}{}
err := json.Unmarshal([]byte(msg), &u)
if err != nil {
panic(err)
}
args := u["args"]
log.Println(args[0]["time"]) // invalid notation...
}
這明顯錯誤,因爲符號是不正確的:
invalid operation: args[0] (index of type interface {})
我無法找到一個方法來挖掘到地圖深刻ñ搶ested鍵和值。
一旦我可以克服抓住動態值,我想宣佈這些消息。我將如何編寫一個類型結構來表示這樣複雜的數據結構?
返回的JSON是否總是具有相同的字段? – Intermernet
是的,基本上是一樣的。 – ojosilva
然後你應該真的去@ cthom06建議關於定義一個匹配數據的結構。從長遠來看,它會讓你更容易,因爲你會知道每個字段的類型。 – Intermernet