2016-06-14 2 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

関連する問題