我正在尝试将此 API 响应解组到 Golang 结构。
{
"0": {
"article_id": 1,
"article_inwebshop": 0,
"article_number": 1111111,
"article_season": 0,
"sizeruler": -3,
"article_freefield2": null,
"article_manufacturer": null,
"article_artfabr": null,
"article_freefield1": "name here",
"article_color": null,
"article_subgroup": "name here",
"article_group": "name here",
"article_price_web": "",
"article_additional_info": "",
"article_description": "name here",
"article_creation_date": "2016-09-30",
"article_basepurprice": "0.00",
"article_baseprice": "0.00",
"article_outlet": 0,
"article_discount": "",
"article_memo": "name here",
"article_supplier": null,
"article_price_web_discount": "",
"article_homepage": 0,
"article_weight": "1.60",
"article_run_out": 0,
"article_metakeywords": "name here",
"article_metadescription": "name here",
"article_metatitle": "name here",
"article_price_wholesale": "0.00",
"article_subsubgroup": "name here",
"salesunit": 1,
"article_deposit": "0.00",
"deliverytime": null,
"article_taxrate": "21.00",
"article_group_extra": [],
"article_is_composed": "false",
"fields": {
"aantal_flessen": "",
"alcoholpercentage": "40%",
"beschikbaarheid": "",
"bottelaar": "name here",
"distillery_merk": "name here",
"druivensoort": "",
"gebotteld": "",
"gedistilleerd": "",
"inhoudsmaat": "1 liter",
"land": "",
"leeftijd": "no-age-statement",
"oogstjaar": "",
"regio": "name here",
"serie": "",
"vatnummer": "",
"vattype": "name here",
"verpakking": "",
"wijnhuis_merk": "",
"article_memo_en": "",
"datum_nieuw_binnen": "",
"doos_prijs": "",
"add_informatie": "",
"test": "",
"maximum_aantal_per_klant": ""
},
"virtual_articles": [],
"virtual_article_parents": [],
"images": [
{
"image_description": "Shan_Classic",
"image_file": "Shan_Classic.jpg",
"image_order": 1,
"image_link": "Shan_Classic.jpg",
"image_checksum": "234234234"
},
{
"image_description": "Anto_Classic",
"image_file": "Anto_Classic.jpg",
"image_order": 2,
"image_link": "Anto_Classic.jpg",
"image_checksum": "234234234"
}
],
"sizes": [
{
"position": 1,
"description": null,
"stock": 0,
"salepricedelta": "0.00",
"purpricedelta": "0.00"
}
],
"barcodes": [
{
"position": 1,
"barcode": "123123123"
},
{
"position": 1,
"barcode": "123123123"
}
],
"article_crossell": [],
"article_upsell": [],
"article_composed": [],
"article_actions": []
},
"next_page": 2
}
我尝试了各种方法,但无法使其正常工作。我最新的代码是:
var items map[string]types.Synchronize
err = json.Unmarshal(body, &items)
if err != nil {
fmt.Println(err)
return
}
但这会导致以下错误:
json:无法将数字解组为类型 types.Synchronize
的 Go 值
任何人都可以向我解释我做错了什么吗?我尝试了各种方法来解组这个东西,但到目前为止没有任何运气。
这是我的同步结构:
type Synchronize struct {
ArticleId int64 `json:"article_id"`
ArticleInWebshop int64 `json:"article_inwebshop"`
ArticleNumber int64 `json:"article_number"`
ArticleSeason int64 `json:"article_season"`
ArticleManufacturer string `json:"article_manufacturer"`
ArticleGroup string `json:"article_group"`
ArticleSubgroup string `json:"article_subgroup"`
ArticleSubSubGroup string `json:"article_subsubgroup"`
ArticleDescription string `json:"article_description"`
ArticleAdditionalInfo string `json:"article_additional_info"`
ArticleBasePrice string `json:"article_baseprice"`
ArticleOutlet int64 `json:"article_outlet"`
ArticleDiscount string `json:"article_discount"`
ArticleMemo string `json:"article_memo"`
ArticleSupplier string `json:"article_supplier"`
ArticleWeight string `json:"article_weight"`
ArticleVolume string `json:"inhoudsmaat"`
ArticleMetaTitle string `json:"article_metatitle"`
ArticleMetaKeywords string `json:"article_metakeywords"`
ArticleMetaDescription string `json:"article_metadescription"`
ArticleTaxRate string `json:"article_taxrate"`
ArticleSalesUnit int64 `json:"salesunit"`
ArticleAlcoholPercentage string `json:"alcoholpercentage"`
ArticleBottler string `json:"bottelaar"`
ArticleDistillery string `json:"distillery_merk"`
ArticleCountry string `json:"land"`
ArticleHarvestYear string `json:"oogstjaar"`
ArticleRegion string `json:"regio"`
ArticleBarrelType string `json:"vattype"`
ArticleAddInformation string `json:"add_informatie"`
ArticleBarcodes string `json:"ArticleBarcodes"`
ArticleGrapeDetails string `json:"druivensoort"`
ArticleMaximumPerCustomer string `json:"maximum_aantal_per_klant"`
ArticleImages []ArticleImages `json:"images"`
}
type ArticleImages struct {
ArticleImageDescription string `json:"image_description"`
ArticleImageFile string `json:"image_file"`
ArticleImageOrder int64 `json:"image_order"`
ArticleImageLink string `json:"image_link"`
ArticleImageChecksum string `json:"image_checksum"`
}
值得注意的是,API 响应返回了一组文本数字,但也返回了一个“next_page”,这非常重要,也是我需要的。
所以基本上这就是 API 响应给我的内容:
{
"0": {},
"1": {},
"2": {},
"next_page": 2,
}
代码中的问题是由于“next_page”字段是一个数字,因此它在解组时会失败,您可以做的是将对象编组到map[string]interface{}并单独处理next_page属性。