登录
首页 >  Golang >  Go问答

当Golang的Marshal转换为json时,数组部分变成了对象,所以我想保留数组

来源:stackoverflow

时间:2024-04-24 10:21:27 430浏览 收藏

你在学习Golang相关的知识吗?本文《当Golang的Marshal转换为json时,数组部分变成了对象,所以我想保留数组》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我想做什么

  • 使用 unmarshal 将 json 格式的 {"color": "red", "mrkdwn_in":["text"]} 转换为结构体
  • 将“颜色”从“红色”更改为“蓝色”
  • 使用 marshal 将更改后的结构更改为 json
  • 原始的 "mrkdwn_in":["text"]} 保存得不好。
    • 它变成 "mrkdwn_in":[{"text":""}]"mrkdwn_in":""
  • 我想将“mrkdwn_in”部分保留其原始状态。

代码

package main

import (
    "encoding/json"
    "fmt"
)

type TestStruct struct {
    Color        string       `json:"color"`
    MrkdwnIn     []MrkdwnIn   `json:"mrkdwn_in"`
}

type MrkdwnIn struct {
    Text string `json:"text"`
}

func main() {
    jsonData1 := "{\"color\":\"red\",\"mrkdwn_in\":[\"text\"]}"
    var body TestStruct
    json.Unmarshal([]byte(jsonData1), &body)
    body.Color = "blue"
    var jsonData2 []byte
    jsonData2, _ = json.Marshal(body)

    jsonDataText := string(jsonData2)
    fmt.Println(jsonDataText)
}

上述代码的执行结果


解决方案


错误很明显

mrkdwnin     []mrkdwnin   `json:"mrkdwn_in"`

mrkdwnin 是一个对象数组

MrkdwnIn     []string`json:"mrkdwn_in"`

mrkdwnin 应该是一个字符串数组

理论要掌握,实操不能落!以上关于《当Golang的Marshal转换为json时,数组部分变成了对象,所以我想保留数组》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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