gpt4 book ai didi

go - 如何将我的 2d 字符串片段转换为 []byte?

转载 作者:数据小太阳 更新时间:2023-10-29 03:20:48 26 4
gpt4 key购买 nike

我已经创建了一个 2d slice 并从后端数据库填充它,但是由于 json.Unmarshal 只接受 []byte 作为第一个参数我如何将我的 2d slice 转换为 []byte。

这里是引用示例代码,因为我不能分享内部代码:

package main

import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

//User sjd
type User struct {
EmailList [][]string `json:"emailList"`
}

func listHandler(w http.ResponseWriter, r *http.Request) {
reqBody, _ := ioutil.ReadAll(r.Body)
var user User
json.Unmarshal(reqBody, &user)
el := user.EmailList
keys := make([][]string, 0)
json.Unmarshal([]byte(el), &keys) //this line not working because []byte(el) not possible
fmt.Println(keys)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write([]byte(el))//this line not working because []byte(el) not possible
}

func main() {
http.HandleFunc("/", listHandler)
http.ListenAndServe(":8080", nil)
}

示例请求:

{
"emailList": [
[
"akki@gmail.com",
"bakki@gmail.com"
],
[
"lakki@gmail.com",
"jakki@gmail.com"
]
]
}

最佳答案

Unmarshal JSON 作为 []byteuserMarshal user.EmailList 到 JSON 作为 []byte。例如,

package main

import (
"encoding/json"
"fmt"
"os"
)

type User struct {
EmailList [][]string `json:"emailList"`
}

func main() {
// rBody, err := ioutil.ReadAll(r.Body)
rBody := []byte(`
{
"emailList": [
[
"akki@gmail.com",
"bakki@gmail.com"
],
[
"lakki@gmail.com",
"jakki@gmail.com"
]
]
}
`)
fmt.Println(string(rBody))

var user User
err := json.Unmarshal(rBody, &user)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(user.EmailList)

wData, err := json.Marshal(user.EmailList) // wData is []byte
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(wData) // wData is []byte
fmt.Println(string(wData))
// _, err = w.Write(wData)
}

Playground :https://play.golang.org/p/S3HWiTqz--B

输出:

{
"emailList": [
[
"akki@gmail.com",
"bakki@gmail.com"
],
[
"lakki@gmail.com",
"jakki@gmail.com"
]
]
}

[[akki@gmail.com bakki@gmail.com] [lakki@gmail.com jakki@gmail.com]]
[91 91 34 97 107 107 105 64 103 109 97 105 108 46 99 111 109 34 44 34 98 97 107 107 105 64 103 109 97 105 108 46 99 111 109 34 93 44 91 34 108 97 107 107 105 64 103 109 97 105 108 46 99 111 109 34 44 34 106 97 107 107 105 64 103 109 97 105 108 46 99 111 109 34 93 93]
[["akki@gmail.com","bakki@gmail.com"],["lakki@gmail.com","jakki@gmail.com"]]

关于go - 如何将我的 2d 字符串片段转换为 []byte?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54317741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com