第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用結(jié)構(gòu)的類型而不是 go 中的標(biāo)簽重新編組結(jié)構(gòu)?

如何使用結(jié)構(gòu)的類型而不是 go 中的標(biāo)簽重新編組結(jié)構(gòu)?

Go
一只斗牛犬 2022-06-27 11:12:49
我想將結(jié)構(gòu)重新編組為 json,并使用結(jié)構(gòu)中定義的類型作為輸出。結(jié)構(gòu):type A struct{B []B //edit: fields have to be exported to work}type B struct{X string `json:"x"` //edit: fields have to be exported to workY float64 `json:"y,string"` //edit: fields have to be exported to workZ float64 `json:"z,string"` //edit: fields have to be exported to work如果使用這些結(jié)構(gòu)解組,我會得到 By 作為 float64,正如預(yù)期的那樣。但是,如果我再次將其重新編組為 JSON,我會得到我解組的 JSON,其中 y 和 z 作為字符串,但我想將它們作為 float64。我必須添加 ',string' 部分,因?yàn)?API 在 JSON 響應(yīng)中將所有內(nèi)容都作為字符串返回(參見下面的示例)。我是否必須編寫一個自定義編組函數(shù)來執(zhí)行此操作,或者我可以將 json 標(biāo)記添加到結(jié)構(gòu)定義中嗎?示例響應(yīng)和重新編組的 json:{    "A": [        {            "x": "test1",            "y": "1.00",            "z": "1.01"        },        {            "x": "test2",            "y": "2.00",            "z": "2.01"        }    ]}預(yù)期的重新編組 JSON:{    "A": [        {            "x": "test1",            "y": 1.00,            "z": 1.01        },        {            "x": "test2",            "y": 2.00,            "z": 2.01        }    ]}
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個贊

您根本無法編組或解組這些字段,因?yàn)檫@些字段未導(dǎo)出。但是要執(zhí)行您所描述的操作,只需轉(zhuǎn)換為沒有(或不同)結(jié)構(gòu)標(biāo)記的等效類型。因?yàn)樗且粋€嵌套切片,所以您必須對其進(jìn)行迭代。


func main() {

    a := A{}

    err := json.Unmarshal(corpus, &a)

    if err != nil {

        panic(err)

    }

    c := C{}

    for _, b := range a.B {

        c.B = append(c.B, D(b))

    }

    payload, _ := json.Marshal(c)

    fmt.Println(string(payload))

}


type A struct {

    B []B

}


type B struct {

    X string  `json:"x"`

    Y float64 `json:"y,string"`

    Z float64 `json:"z,string"`

}


type C struct {

    B []D

}


type D struct {

    X string  `json:"x"`

    Y float64 `json:"y"`

    Z float64 `json:"z"`

}

工作場所示例: https: //play.golang.org/p/pQTcg0RV_RL


查看完整回答
反對 回復(fù) 2022-06-27
  • 1 回答
  • 0 關(guān)注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號