1

I'm new to Go and working hard to follow its style and I'm not sure how to proceed.

I want to push a JSON object to a Geckoboard leaderboard, which I believe requires the following format based on the API doc and the one for leaderboards specifically:

{
  "api_key": "222f66ab58130a8ece8ccd7be57f12e2",
  "data": {
     "item": [
        { "label": "Bob", "value": 4, "previous_value": 6 },
        { "label": "Alice", "value": 3, "previous_value": 4 }
      ]
  }
}

My instinct is to build a struct for the API call itself and another called Contestants, which will be nested under item. In order to use json.Marshall(Contestant1), the naming convention of my variables would not meet fmt's expectations:

// Contestant structure to nest into the API call
type Contestant struct {
    label  string
    value int8
    previous_rank int8  
}

This feels incorrect. How should I configure my Contestant objects and be able to marshall them into JSON without breaking convention?

1 Answer 1

3

To output a proper JSON object from a structure, you have to export the fields of this structure. To do it, just capitalize the first letter of the field.

Then you can add some kind of annotations, to tell your program how to name your JSON fields :

type Contestant struct {
    Label  string `json:"label"`
    Value int8 `json:"value"`
    PreviousRank int8 `json:"previous_rank"` 
}
Sign up to request clarification or add additional context in comments.

1 Comment

Excellent. That did it! I was doing so and ran into a problem when I introduced a space between json: and "value". Thank you!

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.