无法在google go中迭代解析的JSON

时间:2013-12-11 14:23:54

标签: json go

我是新手编程,我试图解析以下格式的JSON文件:

{
  "movies": [
    {
      "name": "Inception",
      "rating": 8.8,
      "genres": [
        "Action",
        "Adventure",
        "Sci-Fi"
      ]
    },
    {
      "name": "Godfather",
      "rating": 9.2,
      "genres": [
        "Crime",
        "Drama"
      ]
    }
  ]
}

使用此代码:

package main

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

type Movie struct {
  name   string
  rating float64
  genres []string
}

type MovieRating struct {
  movies []Movie
  genre map[string]float64
}

func (mr *MovieRating) init(filename string) {
  var raw interface{}
  data, _ := ioutil.ReadFile(filename)
  _ = json.Unmarshal(data, &raw)
  tmp := raw.(map[string]interface{})["movies"]
  fmt.Println(tmp)
  // now I need to create an array of movies here and assign to mr.movies 
}

func (mr *MovieRating) calculate_rating() {
  fmt.Println("calculating")
}

func main() {
  var mr MovieRating
  mr.init("data.json")
  mr.calculate_rating()
}

但是在解析之后我不知道如何遍历解析的对象。解析的对象是接口类型,如何解析这部电影?

1 个答案:

答案 0 :(得分:6)

将您的Json文件解析为指针以分割电影[]Movie,不要使用interface{}

还有一件事:

  

json包只访问struct类型的导出字段   (以大写字母开头的那些)。

最后,开始herehere

编辑:这是一个解密电影数组的工作example