2017-06-06 12 views
0

私はかなり新しくGoです。オブジェクトを[]型のGo値にアンマーシャリングできませんuint8

package main 

import (
    "encoding/json" 
    "fmt" 
) 
func main() { 

    byt := []byte(`{"num":6.13,"strs":["a","b"]}`) 
    dat := []byte(`{"num":7.13,"strs":["c","d"]}`) 
    if err := json.Unmarshal(byt, &dat); err != nil { 
     panic(err) 
    } 
    fmt.Println(dat) 

} 

エラー行き方::

cannot "unmarshal object into Go value of type []uint8".

がどのように私はこれを修正してくださいすることができますが、私は次のコードを持っていますか?

+1

正確に何をしようとしていますか?期待される成果は? – Maroun

答えて

5

あなたは2つのJSON入力を持っていて、一方を他方に非整列しようとしています。それは意味をなさない。

タイプ(構造体)のJSON入力(オブジェクト)をモデリングし、それを非整列化します。

type Obj struct { 
    Num float64 `json:"num"` 
    Strs []string `json:"strs"` 
} 

func main() { 
    byt := []byte(`{"num":6.13,"strs":["a","b"]}`) 

    var obj Obj 
    if err := json.Unmarshal(byt, &obj); err != nil { 
     panic(err) 
    } 
    fmt.Println(obj) 

} 

出力(Go Playground上でそれを試してみてください):たとえば

import (
    "encoding/json" 
    "fmt" 
) 

func main() { 
    var dat interface{} 
    byt := []byte(`{"num":6.13,"strs":["a","b"]}`) 
    if err := json.Unmarshal(byt, &dat); err != nil { 
     panic(err) 
    } 
    fmt.Println(dat) 
} 

何メイン

パッケージ:

{6.13 [a b]} 
2

私はあなたがこのような何かをするためのものだと思いますあなたは2つのJSONオブジェクトを別のものにアンマーシャリングしようとしているので、意味を成さないようにしようとしていました。