Golang JSON 结构结果无法解组

问题描述 投票:0回答:1

我正在尝试将此 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,
}
go
1个回答
0
投票

代码中的问题是由于“next_page”字段是一个数字,因此它在解组时会失败,您可以做的是将对象编组到map[string]interface{}并单独处理next_page属性。

© www.soinside.com 2019 - 2024. All rights reserved.