将结构发送到golang中的表单字段

将结构发送到golang中的表单字段,go,Go,我有一个必须发送到api的结构,这是一个post请求。但输入是表单字段。字段包含字符串、整数、浮点和图像。 我尝试使用WriteField函数,但由于该函数只接受字符串作为参数,所以无法处理整数和浮点。我该怎么做呢。这是我的结构和代码片段 c := finalObject{ name: Name, ProfilePic:"/img/unknown.jpg", owner:"Mr Hall", latitude:26.5473828, longitude:8

我有一个必须发送到api的结构,这是一个post请求。但输入是表单字段。字段包含字符串、整数、浮点和图像。 我尝试使用WriteField函数,但由于该函数只接受字符串作为参数,所以无法处理整数和浮点。我该怎么做呢。这是我的结构和代码片段

c := finalObject{
    name: Name,
    ProfilePic:"/img/unknown.jpg",
    owner:"Mr Hall",
    latitude:26.5473828,
    longitude:88.4249179,
    opendays:"Monday-Friday",
    openhours:"10am to 5pm",
    catId:82,
    address:address,
    phone_number:2312312,
    mobile_number:312312,
    email:"dsdas@a.com",
  }

  url := "https://abcd.com/a"
    fmt.Println("URL:>", url)
    b, err := json.Marshal(c)
    if err != nil {
      fmt.Println("error:", err)
    }
    os.Stdout.Write(b)
    var jsonStr = []byte(b)
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
    req.Header.Set("Authorization", "AUTH_TOKEN")
    req.Header.Set("enctype", "multipart/form-data")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
      panic(err)
    }
    defer resp.Body.Close()

    fmt.Println("response Status:", resp.Status)
    fmt.Println("response Headers:", resp.Header)
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println("response Body:", string(body))
    fmt.Printf("%#v", c);
  }

HTTP表单中的表单值仅作为字符串值发送


如果您还可以自由决定表单键,那么您可以将整个结构作为json编码的字符串添加到通用的“数据”字段中,并发送请求。否则,必须将结构值转换为字符串表示,才能在请求中发送它们

服务器需要什么格式(application/x-www-form-urlencoded或multipart/form data)?将int和float转换为字符串就像fmt.Sprintf(“%d”,i)和fmt.Sprintf(“%f”,f)一样简单,所以这不会是问题,或者?服务器需要multipart/form data@CeriseLimónCreate multipart form body和WriteField(name,fmt.Sprintf(“%v”,value))对于每个字段。但是如何将结构转换为Stringb,err:=json.Marshal(c)b是一个字节数组,可以在字符串变量中进行类型转换,然后在服务器端再次进行类型转换和取消组分