登录
首页 >  Golang >  Go问答

如何将字节编码为UTF-8而不是base64时,是否可以使用json.Marshal中的内置参数arg?

来源:stackoverflow

时间:2024-02-07 12:03:23 150浏览 收藏

你在学习Golang相关的知识吗?本文《如何将字节编码为UTF-8而不是base64时,是否可以使用json.Marshal中的内置参数arg?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我的目标是发送 json 格式的结构。

问题是,该结构体的字段大部分是 [][]byte

目前我能想到的解决方案:

  1. 重申字段并执行 string(field1)
  2. 在前端执行 atob(field1)

我认为第二种解决方案是更好的方法。不管怎样,如果有一个内置的 arg 到 json.marshal 一个 utf-8 而不是 base64 的结构,那就太好了。

可复制代码main.go

package main

type response1 struct {
    Page   int
    Fruits []string
    Names  [][]byte
}

func main() {
    res1D := &response1{
        Page:   1,
        Fruits: []string{"apple", "peach", "pear"},
        Names:  [][]byte{[]byte("jack"), []byte("james")}}
    res1B, _ := json.Marshal(res1D)
    fmt.Println("res1B", string(res1B))
}

正确答案


不,但您可以编写自定义 MarshalJSON,它将在 json.marshal 中使用,而不是默认操作

type response1 struct {
    Page   int
    Fruits []string
    Names  [][]byte
}

func (r response1) MarshalJSON() ([]byte, error) {
    var names []string
    for _, n := range r.Names {
        names = append(names, string(n))
    }
    return json.Marshal(struct {
        Page   int
        Fruits []string
        Names  []string
    }{
        Page:   r.Page,
        Fruits: r.Fruits,
        Names:  names,
    })
}

理论要掌握,实操不能落!以上关于《如何将字节编码为UTF-8而不是base64时,是否可以使用json.Marshal中的内置参数arg?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>