嵌套的 JSON 在 Go 语言和 gin-gonic 中的处理方式如下:

huangapple go评论107阅读模式
英文:

nested json with go lang and gin-gonic

问题

我有一个 JSON 文件,我想用 Go 语言和 Gin-Gonic 进行服务。我可以像这样进行服务:

  1. func main() {
  2. r := gin.Default()
  3. r.GET("/api/auth", func(c *gin.Context) {
  4. jsonData := []byte(`[{
  5. "date": "gAAAAABgupdG-1IDgOD1uqauANLdt4KC8yHazbPt5g==",
  6. "hwid": "GyFfDNpk56WcKOCAgKqIr8ELI0nAhe2ZgjEdLr5UHblBXeS-5pl2YIunZHwrbQoZv6gtD-ORLAwSQu7futgRTZUr5sNXnkjGurT60EJGRHn_S",
  7. "hwid_resets": "TljjFnU_QkmYgQw9bfqHlFXSw1uQPsznwSylQ8_awHoxOKoYaCEFPg==",
  8. "id": "gAAAAABgupdGg6POUjVAUMazxKmsIB2D-gu5zRZWK2eaqJk-OMohG-JQL00hAD2SpEB-mnJYJChBGPQ==",
  9. "key": "gAAAAABgupdGq_HbYNJWkl7btrZUrxdO3wlwS8_KWUh69EXwxmTiSsB_GynUVcxpbOOKSQmfR_FoRmgfwz6-LI3yp7D-VIY-X6B7DSl0nAK2s",
  10. "notes": "gAAAAABgupdGSSMNcQXVFzyIbT8mdRan204BDkNLH-jCaVMMMQxbGBx0jej3_2hjSFpagBa5BNU1WqsIR1og-A==",
  11. "total_logins": "gAAAAABgupdGEF_9XEIbHefOuNuvxypTh9orUKS0qC8Kbvql7xJw1wn8aT0wVGsFxVllJBFw==",
  12. }]`)
  13. c.Data(200, "application/json", jsonData)
  14. })
  15. }

但是我想使用 c.JSON 进行服务,但是我在使用它时遇到了问题,我尝试了以下代码:

  1. r := gin.Default()
  2. r.GET("/api/auth", func(c *gin.Context) {
  3. jsonData := `[{
  4. "date": "gAAAAABgupdG-1IDgOD1uqauANLdt4KC8yHazbPt5g==",
  5. "hwid": "GyFfDNpk56WcKOCAgKqIr8ELI0nAhe2ZgjEdLr5UHblBXeS-5pl2YIunZHwrbQoZv6gtD-ORLAwSQu7futgRTZUr5sNXnkjGurT60EJGRHn_S",
  6. "hwid_resets": "TljjFnU_QkmYgQw9bfqHlFXSw1uQPsznwSylQ8_awHoxOKoYaCEFPg==",
  7. "id": "gAAAAABgupdGg6POUjVAUMazxKmsIB2D-gu5zRZWK2eaqJk-OMohG-JQL00hAD2SpEB-mnJYJChBGPQ==",
  8. "key": "gAAAAABgupdGq_HbYNJWkl7btrZUrxdO3wlwS8_KWUh69EXwxmTiSsB_GynUVcxpbOOKSQmfR_FoRmgfwz6-LI3yp7D-VIY-X6B7DSl0nAK2s",
  9. "notes": "gAAAAABgupdGSSMNcQXVFzyIbT8mdRan204BDkNLH-jCaVMMMQxbGBx0jej3_2hjSFpagBa5BNU1WqsIR1og-A==",
  10. "total_logins": "gAAAAABgupdGEF_9XEIbHefOuNuvxypTh9orUKS0qC8Kbvql7xJw1wn8aT0wVGsFxVllJBFw==",
  11. }]`
  12. c.JSON(200, jsonData)
  13. })

但是当我在浏览器中打开该路由时,我得到了以下结果:

  1. "[{\n\t\t\t\"date\": \"gAAAAABgupdG-1IDgOD1uqauANLdt4KC8yHazbPt5g==\",\n\t\t\t\"hwid\": \"GyFfDNpk56WcKOCAgKqIr8ELI0nAhe2ZgjEdLr5UHblBXeS-5pl2YIunZHwrbQoZv6gtD-ORLAwSQu7futgRTZUr5sNXnkjGurT60EJGRHn_S\",\n\t\t\t\"hwid_resets\": \"TljjFnU_QkmYgQw9bfqHlFXSw1uQPsznwSylQ8_awHoxOKoYaCEFPg==\",\n\t\t\t\"id\": \"gAAAAABgupdGg6POUjVAUMazxKmsIB2D-gu5zRZWK2eaqJk-OMohG-JQL00hAD2SpEB-mnJYJChBGPQ==\",\n\t\t\t\"key\": \"gAAAAABgupdGq_HbYNJWkl7btrZUrxdO3wlwS8_KWUh69EXwxmTiSsB_GynUVcxpbOOKSQmfR_FoRmgfwz6-LI3yp7D-VIY-X6B7DSl0nAK2s\",\n\t\t\t\"notes\": \"gAAAAABgupdGSSMNcQXVFzyIbT8mdRan204BDkNLH-jCaVMMMQxbGBx0jej3_2hjSFpagBa5BNU1WqsIR1og-A==\",\n\t\t\t\"total_logins\": \"gAAAAABgupdGEF_9XEIbHefOuNuvxypTh9orUKS0qC8Kbvql7xJw1wn8aT0wVGsFxVllJBFw==\",\n\t\t}]"

很明显,这不是一个有效的 JSON。我刚刚完成了一个关于 Go 语言的课程,但它没有解释我想要做的事情,所以我来这里寻求帮助。提前感谢您的帮助!

英文:

I have a json which i want to serve with go lang and Gin-Gonic I'm able to serve it like this

  1. func main() {
  2. r := gin.Default()
  3. r.GET("/api/auth", func(c *gin.Context) {
  4. jsonData := []byte(`[{
  5. "date": "gAAAAABgupdG-1IDgOD1uqauANLdt4KC8yHazbPt5g==",
  6. "hwid": "GyFfDNpk56WcKOCAgKqIr8ELI0nAhe2ZgjEdLr5UHblBXeS-5pl2YIunZHwrbQoZv6gtD-ORLAwSQu7futgRTZUr5sNXnkjGurT60EJGRHn_S",
  7. "hwid_resets": "TljjFnU_QkmYgQw9bfqHlFXSw1uQPsznwSylQ8_awHoxOKoYaCEFPg==",
  8. "id": "gAAAAABgupdGg6POUjVAUMazxKmsIB2D-gu5zRZWK2eaqJk-OMohG-JQL00hAD2SpEB-mnJYJChBGPQ==",
  9. "key": "gAAAAABgupdGq_HbYNJWkl7btrZUrxdO3wlwS8_KWUh69EXwxmTiSsB_GynUVcxpbOOKSQmfR_FoRmgfwz6-LI3yp7D-VIY-X6B7DSl0nAK2s",
  10. "notes": "gAAAAABgupdGSSMNcQXVFzyIbT8mdRan204BDkNLH-jCaVMMMQxbGBx0jej3_2hjSFpagBa5BNU1WqsIR1og-A==",
  11. "total_logins": "gAAAAABgupdGEF_9XEIbHefOuNuvxypTh9orUKS0qC8Kbvql7xJw1wn8aT0wVGsFxVllJBFw==",
  12. }]`)
  13. c.Data(200, "application/json", jsonData)
  14. })
  15. }

but i want to serve it with c.JSON i'm getting issues using it i'm trying something like this

  1. r := gin.Default()
  2. r.GET("/api/auth", func(c *gin.Context) {
  3. jsonData := `[{
  4. "date": "gAAAAABgupdG-1IDgOD1uqauANLdt4KC8yHazbPt5g==",
  5. "hwid": "GyFfDNpk56WcKOCAgKqIr8ELI0nAhe2ZgjEdLr5UHblBXeS-5pl2YIunZHwrbQoZv6gtD-ORLAwSQu7futgRTZUr5sNXnkjGurT60EJGRHn_S",
  6. "hwid_resets": "TljjFnU_QkmYgQw9bfqHlFXSw1uQPsznwSylQ8_awHoxOKoYaCEFPg==",
  7. "id": "gAAAAABgupdGg6POUjVAUMazxKmsIB2D-gu5zRZWK2eaqJk-OMohG-JQL00hAD2SpEB-mnJYJChBGPQ==",
  8. "key": "gAAAAABgupdGq_HbYNJWkl7btrZUrxdO3wlwS8_KWUh69EXwxmTiSsB_GynUVcxpbOOKSQmfR_FoRmgfwz6-LI3yp7D-VIY-X6B7DSl0nAK2s",
  9. "notes": "gAAAAABgupdGSSMNcQXVFzyIbT8mdRan204BDkNLH-jCaVMMMQxbGBx0jej3_2hjSFpagBa5BNU1WqsIR1og-A==",
  10. "total_logins": "gAAAAABgupdGEF_9XEIbHefOuNuvxypTh9orUKS0qC8Kbvql7xJw1wn8aT0wVGsFxVllJBFw==",
  11. }]`
  12. c.JSON(200, jsonData)
  13. })

but when i open the route on my browser i get this

  1. "[{\n\t\t\t\"date\": \"gAAAAABgupdG-1IDgOD1uqauANLdt4KC8yHazbPt5g==\",\n\t\t\t\"hwid\": \"GyFfDNpk56WcKOCAgKqIr8ELI0nAhe2ZgjEdLr5UHblBXeS-5pl2YIunZHwrbQoZv6gtD-ORLAwSQu7futgRTZUr5sNXnkjGurT60EJGRHn_S\",\n\t\t\t\"hwid_resets\": \"TljjFnU_QkmYgQw9bfqHlFXSw1uQPsznwSylQ8_awHoxOKoYaCEFPg==\",\n\t\t\t\"id\": \"gAAAAABgupdGg6POUjVAUMazxKmsIB2D-gu5zRZWK2eaqJk-OMohG-JQL00hAD2SpEB-mnJYJChBGPQ==\",\n\t\t\t\"key\": \"gAAAAABgupdGq_HbYNJWkl7btrZUrxdO3wlwS8_KWUh69EXwxmTiSsB_GynUVcxpbOOKSQmfR_FoRmgfwz6-LI3yp7D-VIY-X6B7DSl0nAK2s\",\n\t\t\t\"notes\": \"gAAAAABgupdGSSMNcQXVFzyIbT8mdRan204BDkNLH-jCaVMMMQxbGBx0jej3_2hjSFpagBa5BNU1WqsIR1og-A==\",\n\t\t\t\"total_logins\": \"gAAAAABgupdGEF_9XEIbHefOuNuvxypTh9orUKS0qC8Kbvql7xJw1wn8aT0wVGsFxVllJBFw==\",\n\t\t}]"

which clearly is not a valid json i'm new to go lang i finished a course which it doesn't explain what i want to do that's why i came here to ask thanks in advance

答案1

得分: 1

c.Data将给定的字节原样写入,并将Content-Type设置为application/json,以便接收方知道如何解释数据。

c.JSON首先将输入数据转换为JSON格式。在你的情况下,输入数据是一个字符串,所以它会被编组为一个JSON字符串。

英文:

c.Data writes the given bytes verbatim, setting the Content-Type to application/json, so the receiver knows how to interpret data.

c.JSON first converts the input data into JSON. In your case the input data is a string, so it is marshaled to convert to a JSON string.

huangapple
  • 本文由 发表于 2021年6月23日 09:59:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/68092632.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定