Json unmarshalling in GO

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

Json unmarshalling in GO

问题

我正在尝试将服务器返回的JSON响应解组成不同的类型,但是我找不到如何做到这一点。

可以正常工作的类型是:

  1. type ServerResponse struct {
  2. Total int
  3. Data []User
  4. }
  5. type User struct {
  6. Name string
  7. Age int
  8. }

我可以成功地解组JSON并获得预期的User类型。

我想做的是处理各种服务器响应并在之后进行转换。例如:

  1. type ServerResponse struct {
  2. Total int
  3. Data []ServerItem
  4. }
  5. type User struct {
  6. ServerItem
  7. Name string
  8. Age int
  9. }
  10. type Book struct {
  11. ServerItem
  12. Name string
  13. Author string
  14. }

然后,可以使用User(response.Data)response.Data.(User)将其转换为具体类型,以便稍后的函数正确进行类型检查。

请问有人可以告诉我从哪里开始解决这个问题吗?

英文:

I am trying to unmarshal a json response from the server into various types, but I
am not finding how to do it.

The types which work are :-

  1. type ServerResponse struct {
  2. Total int
  3. Data []User
  4. }
  5. type User struct {
  6. Name string
  7. Age int
  8. }

and I can successfully unmarshal the json and receive the expected User type.

What I want to do is handle various server responses and convert after the
fact. eg.

  1. type ServerResponse struct {
  2. Total int
  3. Data []ServerItem
  4. }
  5. type User struct {
  6. ServerItem
  7. Name string
  8. Age int
  9. }
  10. type Book struct {
  11. ServerItem
  12. Name string
  13. Author string
  14. }

Then use either User(response.Data) or response.Data.(User) to make it a
concrete type so that later functions type check correctly.

Please could anyone let me know where to start looking to solve this issue.

答案1

得分: 1

我不认为这可以轻松地完成。只需解码为map[string]interface{},然后根据此创建你需要的内容。

英文:

I don't think that this can be done easily. Just decode to map[string]interface{} and create your stuff from this.

答案2

得分: 0

这里我写了一个简单的程序,用于解析 JSON。你可以在这个链接中查看:http://play.golang.org/p/51eiswgznR。

你可能还想阅读一下 encoding/json 的文档,可以在这个链接中找到:http://golang.org/pkg/encoding/json/。

英文:

Here I wrote a simple program that parses json http://play.golang.org/p/51eiswgznR.

You may also want to read the encoding/json docs http://golang.org/pkg/encoding/json/

huangapple
  • 本文由 发表于 2013年11月26日 03:37:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/20201712.html
匿名

发表评论

匿名网友

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

确定