2017-01-23 24 views
-1

私はGolangの新機能ですが、大量のデータを持つAPIから得られるような大きなjsonを解析しようとしています。 documentationはどんなJSONでこれを行う方法について説明しますGolangの巨大なjsonを解析する方法

b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`) 
var f interface{} 
err := json.Unmarshal(b, &f) 
m := f.(map[string]interface{}) 

これは正常に動作しますが、私は私が手Twitter dev site上の参照の端に1つのような、私はTwitterのAPIから取得したJSONを使用する場合このエラー:

interface conversion: interface {} is []interface {}, not map[string]interface {}

私は同様の質問があることを知っていますが、答えを見つけることができませんでした。誰かが私にこれを解決するためのより良い方法をお勧めすることができますか?

マイgoバージョンgo1.6.2 linux/amd64。

ありがとうございます!

答えて

2

この場合、単一のJSONオブジェクトをアンマーシャリングするのではなく、JSONオブジェクトの配列をアンマーシャリングするので、API応答を解析する際に問題が発生します。このエラーは、実際のタイプがfであることを示しています。

var f []interface{} 
err := json.Unmarshal(str, &f) 
if err != nil { 
    fmt.Println(err) 
    return 
} 

for _, v := range f { 
    z := v.(map[string]interface{}) 
    for k2, v2 := range z { 
     fmt.Println("Key:", k2, "Value:", v2) 
    } 
} 

fタイプ[]interface{}の界面の配列でなければならない:それはmap[string]interface{}これを見てみましょうようにマッピングすることができる単一のJSONオブジェクトは、あるので、他の例では、働いていました。 APIレスポンスの解析方法に応じて、forループで各キーと値のペアを表示するような操作を行うことができます。

+0

ありがとう、これはうまく動作し、このような愚かな質問のために私を許してください。 –

関連する問題