2016-06-14 40 views

回答

2

您可以使用map[string]interface{}類型。

package main 

import (
     "encoding/json" 
     "fmt" 
) 

func main() { 
     var jsonBlob = []byte(`{"thing": [ 
       {"Name": "Platypus", "Order": "Monotremata"}, 
       {"Name": "Quoll", "Order": "Dasyuromorphia"} 
     ]}`) 
     var jsonthing map[string]interface{} 
     err := json.Unmarshal(jsonBlob, &jsonthing) 
     if err != nil { 
       fmt.Println("error:", err) 
     } 
     for k, v := range jsonthing { 
       fmt.Println("key:", k) 
       fmt.Println("value:", v) 
     } 
} 

這將打印出以下:

▶ go run main.go 
key: thing 
value: [map[Name:Platypus Order:Monotremata] map[Name:Quoll Order:Dasyuromorphia]] 

一個清潔的選擇是使用go-simplejson庫。

首先獲得該軟件包:go get github.com/bitly/go-simplejson

package main 

import (
     "fmt" 

     simplejson "github.com/bitly/go-simplejson" 
) 

func main() { 
     var jsonBlob = []byte(`{"thing": [ 
       {"Name": "Platypus", "Order": "Monotremata"}, 
       {"Name": "Quoll", "Order": "Dasyuromorphia"} 
     ]}`) 

     json, err := simplejson.NewJson(jsonBlob) 
     if err != nil { 
       fmt.Println(err) 
     } 
     b, err := json.EncodePretty() 
     if err != nil { 
       fmt.Println(err) 
     } 
     fmt.Println(string(b)) 
} 

這會給你:

▶ go run main.go 
{ 
    "thing": [ 
    { 
     "Name": "Platypus", 
     "Order": "Monotremata" 
    }, 
    { 
     "Name": "Quoll", 
     "Order": "Dasyuromorphia" 
    } 
    ] 
} 
+0

是的,我的問題是從.json文件中獲取 –

+0

說我給你一個json文件。 data.json我想打印出所有的鍵和值。您可以輕鬆地在javascript中使用for循環執行此操作。 Go有沒有一種很好的方法來操作它。多數民衆贊成我的問題 –

+0

你想操縱JSON或打印JSON?請清楚,因爲它們都需要不同的解決方案。您可以使用'ioutil.ReadFile'將'.json'文件讀入'[] byte''中。 – nii236