我问自己有一个错误,我得到了......我正在制作一个API,它会发送一个看起来像这样的响应:
var StatusBack struct {
Description string // to describe the error/the result
StatusId int // the status number (500 Internal error, 200 OK...)
}
// client get
{
description: "{surname: \"Xthing\", firstname: \"Mister\"}"
status_id: 200
}
所以我的想法是将一个json变成一个带Marshal的字符串,然后Marshal第二次将StatusBack结构发送给它。但是,它并没有使我真正想要的是获得包含另一个对象的对象。客户端只获得一个包含字符串的对象。事情是,我不发送用户作为结果,所以就像我在下面显示的那样我认为我需要一个接口
var StatusBack struct {
Description string // to describe the error
Result <Interface or object, I don t know> // which is the result
StatusId int // the status number (500 Internal error, 200 OK...)
}
// client get
{
description: "User information",
result: {
surname: "Xthing",
firstname: "Mister"
},
status_id: 200
}
就像我之前说的,我不仅发送用户,它可能是很多不同的对象,所以我怎样才能实现它?我的第二个想法是否更好?如果是,我该如何编码呢?
谢谢!
答案 0 :(得分:3)
在golang中,json.Marshal处理嵌套的结构,切片和贴图。
package main
import (
"encoding/json"
"fmt"
)
type Animal struct {
Descr description `json:"description"`
Age int `json:"age"`
}
type description struct {
Name string `json:"name"`
}
func main() {
d := description{"Cat"}
a := Animal{Descr: d, Age: 15}
data, _ := json.MarshalIndent(a,"", " ")
fmt.Println(string(data))
}
此代码打印:
{
"description": {
"name": "Cat"
},
"age": 15
}
当然,解组工作的方式完全相同。 告诉我,如果我误解了这个问题。