1

So I've been trying to populate this monster of a struct I created, but with no success.

type Initial_Load struct {
    Chapters []struct {
        Name    string `Chapter Name`
        PageNum int    `Number of Page"`
        Pages   []struct {
            Description string `Page Description`
            PageNumber  int    `Page Number`
            Source      string `Page Source`
        }
    }
    NumChapters int `Total number of chapters`
}

Here's the JSON that this struct is modeling

{
   "Num_Chapters": 2,
   "Chapters": [
      {
         "Name": "Pilot",
         "Page_Num": 2,
         "Pages": [
            {
               "Page_Number": 1,
               "Source": "local.com",
               "Description": "First Page"
            },
            {
               "Page_Number": 2,
               "Source": "local.com",
               "Description": "Second Page"
            }
         ]
      },
      {
         "Name": "Chapter2",
         "Page_Num": 2,
         "Pages": [
            {
               "Page_Number": 1,
               "Source": "local.com",
               "Description": "First Page"
            },
            {
               "Page_Number": 2,
               "Source": "local.com",
               "Description": "Second Page"
            }
         ]
      },
      {
         "Name": "Chapter3",
         "Page_Num": 2,
         "Pages": [
            {
               "Page_Number": 1,
               "Source": "local.com",
               "Description": "First Page"
            },
            {
               "Page_Number": 2,
               "Source": "local.com",
               "Description": "Second Page"
            }
         ]
      }
   ]
}

There's of answered questions about populating nested structs, but I haven't found one which contains an array of structs. I know this is probably very simple, but I just can't figure it out. Thanks.

1 Answer 1

4

You may need to define those inner structs as types. This works:

type Page struct {
    Description string
    PageNumber  int
    Source      string
}

type Chapter struct {
    Name    string
    PageNum int
    Pages   []Page
}

type Initial_Load struct {
    Chapters    []Chapter
    NumChapters int
}

var x Initial_Load = Initial_Load{
    Chapters: []Chapter{
        {
            Name:    "abc",
            PageNum: 3,
            Pages: []Page{
                {
                    Description: "def",
                    PageNumber:  3,
                    Source:      "xyz",
                },
                {
                    Description: "qrs",
                    PageNumber:  5,
                    Source:      "xxx",
                },
            },
        },
    },
    NumChapters: 1,
}

I only put in 1 chapter, but you get the idea.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! This is the part I was having trouble with: Pages: []Page{{Description: "def",PageNumber: 3,Source: "xyz",},{ Description: "qrs",PageNumber: 5,Source: "xxx", }

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.