2017-01-27 7 views
1

にアンマーシャリングJSONにできません:私は構造体の中に、以下のJSONを非整列化したいのstruct

{"MAIN":{"data":[{"KEY1":"1111111","KEY2":"2222222","KEY3":0,"KEY4":"AAAAAAA","KEY5":"9999","KEY6":"4","KEY7":"BBBBBBB"}]}} 

私はさまざまな方法でjsonStructを変更しようとしましたが、構造体は常に空です:

package main 

import (
    "encoding/json" 
    "fmt" 
) 

type jsonStruct struct { 
    main struct { 
     data []struct { 
      Key1 string `json:"KEY1"` 
      Key2 string `json:"KEY2"` 
      Key3 int `json:"KEY3"` 
      Key4 string `json:"KEY4"` 
      Key5 string `json:"KEY5"` 
      Key6 string `json:"KEY6"` 
      Key7 string `json:"KEY7"` 
     } `json:"data"` 
    } `json:"MAIN"` 
} 

func main() { 
    jsonData := []byte(`{"MAIN":{"data":[{"KEY1":"1111111","KEY2":"2222222","KEY3":0,"KEY4":"AAAAAAA","KEY5":"9999","KEY6":"4","KEY7":"BBBBBBB"}]}}`) 

    var js jsonStruct 

    err := json.Unmarshal(jsonData, &js) 
    if err != nil { 
      panic(err) 
    } 

    fmt.Println(js) 
} 

出力:

{{[]}} 

私が過去に働いているJSONので、何のブラケットを含みません私は問題がそれらに関連していると思う。

誰でも手助けできますか?

https://play.golang.org/p/pymKbOqcM-

+0

:この問題を解決するには、あなたの構造体は、パブリック(大文字で始まる)のフィールドが含まれています作ります有効なJSON。 – BitTickler

答えて

5

他のパッケージ(encoding/json)が(でも反射して)privateフィールドにアクセスすることはできませんので、これが起こっています。 go、privateフィールドは小文字で始まるフィールドです。 ... http://jsonlint.com/が入力されたと言うだろう人のために

type jsonStruct struct { 
    Main struct { 
     Data []struct { 
      Key1 string `json:"KEY1"` 
      Key2 string `json:"KEY2"` 
      Key3 int `json:"KEY3"` 
      Key4 string `json:"KEY4"` 
      Key5 string `json:"KEY5"` 
      Key6 string `json:"KEY6"` 
      Key7 string `json:"KEY7"` 
     } `json:"data"` 
    } `json:"MAIN"` 
} 

https://play.golang.org/p/lStXAvDtpZ

+0

すごい!私はこれに多くの時間を費やしてきました。私は間違いを認識していないとは信じられません。ありがとう。 –

関連する問題