golang:嵌套结构到嵌套 json 或 json

Ming

我正在尝试将 ddd 概念应用于我的 go 项目

然后我有一个带有嵌套结构的实体,如下所示:

type Person struct {
    Id       string
    Name     valueObject.Name
    Email    valueObject.Email
    Password valueObject.Password
    Created  time.Time
    Updated  time.Time
}

    func NewPerson(name valueObject.Name, email valueObject.Email, password valueObject.Password) *Person {
        return &Person{
            Id:       "a",
            Name:     name,
            Email:    email,
            Password: password,
            Created:  time.Now(),
            Updated:  time.Now(),
        }
    }

我所有的对象值都具有与此类似的结构:

type Email struct {
    address string
}

func NewEmail(address string) (Email, error) {
    isValid := valid(address)
    if !isValid {
        return Email{}, ErrEmail
    }
    return Email{address}, nil
}

func (e Email) Value() string {
    return e.address
}

func (e Email) Format() string {
    return strings.TrimSpace(strings.ToLower(e.Value()))
}

func (e Email) Equals(e2 Email) bool {
    return e.Value() == e2.Value()
}

然后因为我有一个嵌套的结构,我想创建一个 ToJSON 函数来返回我的数据,我还需要排除一些作为密码的返回:

type personJson struct {
    id        string
    name      string
    email     string
    createdAt time.Time
    updatedAt time.Time
}
func (p *Person) ToJSON() personJson {
    email := p.Email.Value()
    name := p.Name.FullName()
    person := personJson{id: "dasdas", email: email, name: name, createdAt: p.Created, updatedAt: p.Updated}
    return person
}

但随后在我的控制器中我尝试访问它,或者当我返回此 ToJSON 时总是以 {} 形式出现:

type createPersonDTO struct {
    FirstName string `json:"firstName"`
    LastName  string `json:"lastName"`
    Password  string `json:"password"`
    Email     string `json:"email"`
}

func (*PersonController) CreateNewPerson(ctx *fiber.Ctx) error {
    var dto createPersonDTO
    if err := ctx.BodyParser(&dto); err != nil {
        return utils.CtxError(ctx, http.StatusUnprocessableEntity, err)
    }
    email, err := valueObjects.NewEmail(dto.Email)
    if err != nil {
        return utils.CtxError(ctx, http.StatusUnprocessableEntity, err)
    }
    name, err := valueObjects.NewName(dto.FirstName, dto.LastName)
    if err != nil {
        return utils.CtxError(ctx, http.StatusUnprocessableEntity, err)
    }
    password, err := valueObjects.NewPassword(dto.Password)
    if err != nil {
        return utils.CtxError(ctx, http.StatusUnprocessableEntity, err)
    }
    person := entities.NewPerson(name, email, password)
    return ctx.Status(http.StatusOK).JSON(person.ToJSON())
}

我的 res.body 总是一个空的 json

科尔马西奥

将要导出到的结构的每个字段的第一个字母大写json.Marshal

type personJson struct {
    ID        string
    Name      string
    Email     string
    CreatedAt time.Time
    UpdatedAt time.Time
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

json中带有golang的嵌套结构

来自分类Dev

无法使用 json.MarshalIndent 打印嵌套结构 golang

来自分类Dev

查找JSON文件的嵌套结构的值

来自分类Dev

嵌套结构中的JSON解组

来自分类Dev

将JSON解组为嵌套结构

来自分类Dev

在C ++中嵌套结构JSON样式

来自分类Dev

查询CosmosDB嵌套结构JSON

来自分类Dev

将 JSON 解析为嵌套结构

来自分类Dev

将嵌套JSON响应解编为嵌套结构

来自分类Dev

golang在嵌套结构中解码JSON请求并将其作为blob插入DB

来自分类Dev

解析嵌套的JSON到结构?

来自分类Dev

Golang将嵌套的json解组到结构中

来自分类Dev

Go:JSON编组嵌套结构;错误地省略了外场

来自分类Dev

在Go语言中JSON嵌套结构本身

来自分类Dev

无法将嵌套结构序列化为json

来自分类Dev

使用 Swift 将 Json 解析为嵌套结构

来自分类Dev

Pandas 中嵌套结构化 json 的解析

来自分类Dev

将嵌套结构添加到平面json

来自分类Dev

将扁平化的 json 转换为嵌套结构

来自分类Dev

如何将嵌套结构编组为平面 JSON

来自分类Dev

通过JSON API将嵌套结构映射到具有相同数据的不同嵌套结构

来自分类Dev

Elixir-嵌套JSON解析到结构

来自分类Dev

在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量?

来自分类Dev

Golang将嵌套的JSON解码为嵌套的结构

来自分类Dev

解组嵌套的JSON结构

来自分类Dev

从嵌套结果android解析JSON

来自分类Dev

Golang返回嵌套的JSON

来自分类Dev

Swift-如何将平面json解码为嵌套结构?

来自分类Dev

去解组JSON,但解组嵌套结构作为字符串