

### やりたいこと

  * jsonで`{"color":"red","mrkdwn_in":["text"]}`をUnMarshalで構造体に変換
  * colorをred→blueに変更
  * 変更された構造体をMarshalでjsonに変更
  * 元々の`"mrkdwn_in":["text"]`がうまく維持されない 
    * `"mrkdwn_in":[{"text":""}]`や`"mrkdwn_in":""`になってしまう。
  * mrkdwn_inの部分は元々の状態を維持したいです。

### コード

[code]

    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)
    }
    
[/code]

### 上記コードの実行結果

[![画像の説明をここに入力](https://i.stack.imgur.com/p6c4Y.png)](https://i.stack.imgur.com/p6c4Y.png)


CC BY-SA 4.0
2021-03-29T23:02:11.010
74975
2021-03-30T02:25:05.623
15167
question
go
GolangのUnMarshalでjsonをStructに変換した後、Marshalでjsonに変換した場合、配列の部分がオブジェクトになってしまうので配列を維持したい


これで解決しました。

[code]

    MrkdwnIn     []MrkdwnIn   `json:"mrkdwn_in"`
    
[/code]

↓

[code]

    MrkdwnIn     []string     `json:"mrkdwn_in"`
    
[/code]


CC BY-SA 4.0
2021-03-30T02:25:05.623
74981
2021-03-30T02:25:05.623
15167
74975
answer