Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

馃 always get empty JSON response #164

Closed
washanhanzi opened this issue Feb 21, 2020 · 8 comments
Closed

馃 always get empty JSON response #164

washanhanzi opened this issue Feb 21, 2020 · 8 comments

Comments

@washanhanzi
Copy link

washanhanzi commented Feb 21, 2020

Question description

  • I always got empty {} from JSON response.
  • no error is returned from the c.JSON() method.
  • I tested in Postman, the response is always an empty object like {}. with JSONP method, the response is always callback{}.
  • I don't know what happened or how to dig into this problem.
  • version: 1.7.0

Code snippet (optional)

type status struct {
	code    int32
	message string
}

...
       data := status{
		code:    2,
		message: "hello wolrd",
	}
	if err := c.JSON(data); err != nil {
		log.Printf("error in response %v", err)
	}
@welcome
Copy link

welcome bot commented Feb 21, 2020

Thanks for opening your first issue here! 馃帀 Be sure to follow the issue template!

@Fenny
Copy link
Member

Fenny commented Feb 21, 2020

Make sure that your struct keys are exported using capitalization so the JSON parser can access it.

package main

import (
  "github.com/gofiber/fiber"
)

func main() {
  app := fiber.New()

  type status struct {
    Code    int32
    Message string
  }

  // {"Code":200,"Message":"Hello, World"}
  app.Get("/", func(c *fiber.Ctx) {
    c.JSON(status{200, "Hello, World"})
  })

  type statusLwr struct {
    Code    int32  `json:"code"`
    Message string `json:"message"`
  }

  // {"code":200,"message":"Hello, World"}
  app.Get("/", func(c *fiber.Ctx) {
    c.JSON(statusLwr{200, "Hello, World"})
  })

  // {"code":200,"message":"Hello, World"}
  app.Get("/", func(c *fiber.Ctx) {
    c.JSON(fiber.Map{"code": 200, "message": "Hello, World"})
  })

  app.Listen(3000)
}

@washanhanzi
Copy link
Author

I hate to ask this, but I am really new to golang. Fiber is my first framework to try out.

How to get v2.0.0?

I use:

import (
	"github.com/gofiber/fiber/v2"
)

the go mod report:

cannot load github.com/gofiber/fiber/v2: module github.com/gofiber/fiber@latest found (v1.7.0), but does not contain package github.com/gofiber/fiber/v2

I also tried the github.com/gofiber/fiber@2.0.0, but when I run go get -u, the import package automatic truncated the version.

I read in the blog, the pre-release version must contain a hyphen ?

@washanhanzi
Copy link
Author

washanhanzi commented Feb 21, 2020

It worked after I change to Uppercase. Thank you for the reply.

@Fenny
Copy link
Member

Fenny commented Feb 21, 2020

@washanhanzi, the pre-release is removed, try to run go get -u github.com/gofiber/fiber.
To see what version you are using, try to print:

package main

import (
   "fmt"
   "github.com/gofiber/fiber"
)

func main() {
   fmt.Println(fiber.Version)
}

If this doesn't work, delete the fiber folder ~/go/src/github.com/gofiber/fiber and run:
go get -u github.com/gofiber/fiber again

@washanhanzi
Copy link
Author

washanhanzi commented Feb 21, 2020

In the go.mod file, it says v1.7.0, but the fiber.Version command and the logo output in the console both say v1.6.1.

T_T

Also got v1.7.0 in the go mod cache file, $GOPATH/pkg/mod/github.com/gofiber/fiber@v1.7.0.

Never see v2.0.0 even after clean the go mod cache.

@washanhanzi
Copy link
Author

I found the Version in 33th line in application.go maybe inconsistent with the 1.7.0 release version.

@washanhanzi
Copy link
Author

I'm closing the issue.

I will try to figure out the go mod. T_T

Thank you for the great framework.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants