Golang解组JSON响应,然后使用结构字段名封送
因此,我点击了一个返回JSON响应的API,并将其解组为一个结构,如下所示:Golang解组JSON响应,然后使用结构字段名封送,go,Go,因此,我点击了一个返回JSON响应的API,并将其解组为一个结构,如下所示: package main type ProcessedRecords struct { SLMIndividualID string `json:"individual_id"` HouseholdPosition int `json:"Household Position&qu
package main
type ProcessedRecords struct {
SLMIndividualID string `json:"individual_id"`
HouseholdPosition int `json:"Household Position"`
IndividualFirstName string `json:"individual_first_name"`
}
func main() {
req, _ := http.NewRequest(method, url, payload)
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
}
fmt.Println(body)
var responseObject Response
json.Unmarshal(body, &responseObject)
fmt.Println(responseObject)
这很有效。但是,我需要再次封送此结构,但我希望将结构字段用作键,而不是json:…
字段。我正在使用以下代码:
recordsInput := []*firehose.Record{}
for i := 0; i < len(records); i++ {
if len(recordsInput) == 500 {
* code to submit records, this part works fine *
}
b, err := json.Marshal(records[i])
if err != nil {
log.Printf("Error: %v", err)
}
record := &firehose.Record{Data: b}
recordsInput = append(recordsInput, record)
}
我希望它的格式是:
{"individual_id":"33c05b49-149b-480f-b1c2-3a3b30e0cb6f","Household Position":1...}
{"SLMIndividualId":"33c05b49-149b-480f-b1c2-3a3b30e0cb6f","HouseholdPosition":1...}
如何实现这一点?这些标记说明了应该如何封送结构,因此,如果它们存在,则输出将是这样的。您需要将其转换为不包含
json:
标记的匹配结构:
type ProcessedRecords struct {
SLMIndividualID string `json:"individual_id"`
HouseholdPosition int `json:"Household Position"`
IndividualFirstName string `json:"individual_first_name"`
}
type ProcessedRecordsOut struct {
SLMIndividualID string
HouseholdPosition int
IndividualFirstName string
}
func process() {
var in ProcessedRecords
json.Unmarshal(data, &in)
// Convert to same type w/o tags
out := ProcessedRecordsOut(in)
payload, _ := json.Marshal(out)
// ...
}
请参见此处的工作示例:谢谢,@Adrian。我曾怀疑这是事实,但希望有比复制/粘贴结构更优雅的东西