2016-03-30 24 views
-1

Bir json nesnesini unmarshal yapmaya çalışırken sıkışıp kaldım. Hata görmüyorum ama daha sonra boş bir harita alıyorum. Gitmek için yeniyim, bu yüzden hala kafamı dil yapılarının etrafına sarmaya çalışıyorum. İşteGolang: Unmarshal JSON Nesnesi boş olarak haritaya bakıyor

benim veri kaynağı

{ 
    "animationStates": { 
     "idle": { 
      "numFrames": 4, 
      "frames": [ 
       { 
        "frame": {"x":43,"y":106,"w":12,"h":15}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":1,"y":143,"w":12,"h":14}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":71,"y":132,"w":12,"h":14}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":15,"y":126,"w":12,"h":15}, 
        "rotated": true 
       } 
      ] 
     }, 
     "run": { 
      "numFrames": 10, 
      "frames": [ 
       { 
        "frame": {"x":73,"y":82,"w":12,"h":15}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":29,"y":125,"w":12,"h":15}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":33,"y":36,"w":12,"h":16}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":1,"y":107,"w":12,"h":16}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":1,"y":89,"w":12,"h":16}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":17,"y":54,"w":12,"h":16}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":1,"y":125,"w":12,"h":16}, 
        "rotated": false 
       } 
       { 
        "frame": {"x":15,"y":143,"w":12,"h":14}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":29,"y":142,"w":12,"h":14}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":72,"y":99,"w":12,"h":15}, 
        "rotated": false 
       } 
      ] 
     }, 
     "roll": { 
      "numFrames": 5, 
      "frames": [ 
       { 
        "frame": {"x":71,"y":116,"w":12,"h":14}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":71,"y":148,"w":12,"h":10}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":73,"y":47,"w":12,"h":15}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":57,"y":147,"w":12,"h":11}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":29,"y":108,"w":12,"h":15}, 
        "rotated": false 
       } 
      ] 
     }, 
     "jump": { 
      "numFrames": 1, 
      "frames": [ 
       { 
        "frame": {"x":45,"y":54,"w":12,"h":16}, 
        "rotated": false 
       } 
      ] 
     }, 
     "fall": { 
      "numFrames": 1, 
      "frames": [ 
       { 
        "frame": {"x":29,"y":90,"w":12,"h":16}, 
        "rotated": false 
       } 
      ] 
     }, 
     "shoot": { 
      "numFrames": 5, 
      "frames": [ 
       { 
        "frame": {"x":37,"y":1,"w":14,"h":15}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":17,"y":37,"w":14,"h":15}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":1,"y":37,"w":14,"h":16}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":19,"y":19,"w":14,"h":15}, 
        "rotated": false 
       }, 
       { 
        "frame": {"x":1,"y":55,"w":14,"h":15}, 
        "rotated": false 
       } 
      ] 
     } 
    } 
} 

benziyor ve burada kimsenin yanlış yapıyorum görüyor mu

package main 

import (
    "encoding/json" 
    "io/ioutil" 
) 

type AnimationFrame struct { 
    Frame struct { 
     X int `json:"x"` 
     Y int `json:"y"` 
     W int `json:"w"` 
     H int `json:"h"` 
    } `json:"frame"` 
    Rotated bool `json:"rotated"` 
} 

type Animation struct { 
    NumFrames int `json:"numFrames"` 
    Frames []AnimationFrame `json:"frames"` 
} 

type StateList struct { 
    Actions map[string]Animation `json:"animationStates"` 
} 

func NewAnimation (file string) *StateList { 
    list := make(map[string]Animation) 
    s := &StateList{list} 
    buff, err := ioutil.ReadFile(file) 
    check(err) 
    json.Unmarshal([]byte(buff), &s) 
    return s 
} 

func check (e error) { 
    if e != nil { 
     panic(e) 
    } 
} 

unmarshal kullanıyorum kodudur nedir? Teşekkürler.

cevap

3

json.Unmarshal([]byte(buff), &s)'dan döndürülen hata olup olmadığını kontrol edin ve işlem yapın. Geçersiz bir karakter var olduğunu göreceksiniz '{' dizi elemanı sonra en 1685.

playground example

+0

Teşekkür ofset! Bu bilmediği şeyleri nasıl kontrol edeceğimi bilemedim. – instantaphex