2017-07-26 37 views
-2

JSON解碼我有一個JSON像這樣如何去

[{"name":"Name1","age":20},{"name":"Name2","age":29}] 

而且我要對它進行解碼,以映射這個樣子

地圖[圖[「名字」:「名1」。 ...],圖[「名字」:「名稱2」,...]]

在我來說,我有一個邏輯是這樣的

bt:= []byte(metadatas[0]) 
var dat interface{} 
if err := json.Unmarshal(bt, dat); err != nil { 
    panic(err) 
} 
fmt.Println(dat) 

,並作爲響應我正在

[map["name":"Name1" ....] ,map["name":"Name2",....]] 

我怎樣才能得到地圖,而不是

+0

[Golang解析JSON數組數據結構(HTTPS的可能重複: //stackoverflow.com/questions/25465566/golang-parse-json-array-into-data-structure) – Flimzy

回答

1

根據定義map是一種數據結構,保持使用一些預定義項爲特定值的參考。

就你而言,你有一個名爲collection(地圖數組)的數據結構。如果要將收藏項保留爲另一個地圖值,實現此目的的最簡單方法是使用數組(集合)的索引作爲關鍵點將集合轉換爲地圖。

但是我不知道你將能夠做到這一點直頭的json.Unmarshal期間不應用一些額外的轉換

2

爲拆封目標數據結構可以被定義爲val := []map[string]interface{}{}

package main 

import (
    "encoding/json" 
    "fmt" 
) 

func main() { 
    input := []byte(`[{"name":"Name1","age":20},{"name":"Name2","age":29}]`) 
    val := []map[string]interface{}{} 
    if err := json.Unmarshal(input, &val); err != nil { 
     panic(err) 
    } 
    fmt.Printf("%v\n", val) 
} 

Go Playgroung

這給了我們一張地圖片。如果你想把這些映射放在另一個映射中,那麼這個映射的元素應該有一個鍵(比如它們在片中的索引)。

0

我已經解決這個問題,這是我的邏輯

type Meta struct { 
    Name string `json:"name"` 
    Age int `json:"age"` 
} 

type Metadata struct { 
    Collection []Meta 
} 


bt:= []byte(metadatas[0]) 
dat := make([]Meta, 0) 
if err := json.Unmarshal(bt, &dat); err != nil { 
    panic(err) 
} 

而且作爲響應我正在使用對象數組