Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "encoding/json"
- "io/ioutil"
- "fmt"
- "os"
- )
- type Component struct {
- Name string `json:"name"`
- }
- type ComponentMap map[string]*Component
- type Stack struct {
- Components ComponentMap
- }
- type Project struct {
- Stack Stack `json:"stack"`
- }
- func LoadProject() Project {
- raw, err := ioutil.ReadFile("./project.json")
- if err != nil {
- fmt.Println(err.Error())
- os.Exit(1)
- }
- var project Project
- json.Unmarshal(raw, &project)
- return project
- }
- func main() {
- project:= LoadProject()
- println(project.Stack.Components["box/webproxy"].Name)
- }
- func (s *Stack) UnmarshalJSON(b []byte) error {
- var raw interface{}
- if err := json.Unmarshal(b, &raw); err != nil {
- return err
- }
- s.Components = make(ComponentMap)
- mi := raw.(map[string]interface{})
- for k, v := range mi {
- vv := fmt.Sprintf("%#v",v)[len("map[string]interface {}"):]
- var c Component
- if err := json.Unmarshal([]byte(vv), &c); err != nil {
- return err
- }
- s.Components[k] = &c
- }
- return nil
- }
Add Comment
Please, Sign In to add comment