为了账号安全,请及时绑定邮箱和手机立即绑定

json.封送返回奇怪值

json.封送返回奇怪值

Go
蝴蝶刀刀 2022-08-30 21:00:17
我想要来自sql行的json数组。当我尝试在扫描每行后对每个结构进行封送时,它返回奇怪的值,如[123 34 105 100 34 ..]type Org struct {    Id   int    `json:"id"`    Name string `json:"name"`}res, err := db.Query("select id,name from organization")if err != nil {    // fmt.Print("err in query")    panic(err)}// var orgArray []Orgdefer res.Close()for res.Next() {    var org Org    fmt.Println(&org.Id, &org.Name, "PRINT ADDRESS BEFORE SCAN")        //  0xc0001c0648 0xc0001c0650 PRINT ADDRESS BEFORE SCAN    err = res.Scan(&org.Id, &org.Name)    fmt.Println(org.Id, org.Name, org, "PRINT VALUES AFTER SCAN")        // 1535 TestOrg {1535 TestOrg} PRINT VALUES AFTER SCAN    b, err := json.Marshal(org)    if err != nil {        panic(err)    }    fmt.Println(b)    //[123 34 105 100 34 58 49 53 51 55 44 34 110 97 109 101 34 58 34 98 114 97 110 100 32 69 104 71 74 89 34 125]}这有什么问题?
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

json.Marshal响应是字节数组,打印前转换为字符串


package main


import (

    "encoding/json"

    "fmt"

)


type Abc struct {

    A string `json:"a"`

    B string `json:"b"`

}


func main() {

    d := Abc{A: "aaa", B: "bbbb"}


    a, _ := json.Marshal(d)


    fmt.Println(string(a))

}

共享

编辑

跟随json.Marshal响应是字节数组,打印前转换为字符串


package main


import (

    "encoding/json"

    "fmt"

)


type Abc struct {

    A string `json:"a"`

    B string `json:"b"`

}


func main() {

    d := Abc{A: "aaa", B: "bbbb"}


    a, _ := json.Marshal(d)


    fmt.Println(string(a))

}



查看完整回答
反对 回复 2022-08-30
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

json.封送返回一个字节数组 - 。[]byte

打印出来就是这样。您看到的整数(字节值)数组是字节数组在 Go 中打印出来的方式。Printlnb

用于打印字符串。等。string(b)fmt.Println(string(b))


查看完整回答
反对 回复 2022-08-30
  • 2 回答
  • 0 关注
  • 67 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信