json.NewDecode用法

发布时间 2023-12-21 12:46:58作者: 技术颜良

Go使用RFC3339进行编码,如果控制生成的json,只需将2022-04-03T00:00:00.000更改为2022-04-03T00:00:00.000Z

例如,这是有效的。

type Contract struct {
    ContractId          *int       `json:"contract_id"`
    CompanyId           *int       `json:"company_id"`
    DateEstablished     *time.Time `json:"date_established"`
    ExpiryDate          *time.Time `json:"expiry_date"`
    ExtensionExpiryDate *time.Time `json:"extension_expiry_date"`
    Description         *string    `json:"description"`
}

func main() {
    body := `{"contract_id":0,"date_established":"2022-04-03T00:00:00.000Z","expiry_date":null,"extension_expiry_date":null,"description":"fffff"}`

    var contract Contract
    reader := strings.NewReader(body)
    decoder := json.NewDecoder(reader)
    err := decoder.Decode(&contract)
    if err != nil {
        fmt.Println("Error: ", err)
    } else {
        fmt.Printf("Contract: %+v\n", contract)
    }
}

如果不控制json,则需要编写一个自定义解组方法。