如何在数组列表中保存[] byte数据

时间:2019-12-29 10:15:06

标签: go

总结问题

我制作了一些从toggl api接收数据的应用程序。 我尝试在[Go]的数组列表中保存[] byte响应数据,以便稍后修改数据。 我想知道如何将响应[] byte json样式数据转换和存储为数组列表。

显示一些代码

main.go


type togglData struct {
}

func GetTogglReports() []byte {
    //some code

    resp, err := client.Do(req)
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()

    data, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }

    return data
}

func makeSurveyText() {
    // I want to save []byte data GetTogglReports() in array list here.
    var togglData []togglData
}

数据是这样的:

 {
    "total_grand":36004000,
    "total_billable":14400000,
    "total_currencies":[{"currency":"EUR","amount":40}],
    "data": [
      {
        "id":193009951,
        "title":{"project":"Toggl Development","client":null},
        "time":14400000,
        "total_currencies":[{"currency":"EUR","amount":0}],
        "items":[
          {
            "title":{"time_entry":"Hard work"},
            "time":14400000,
            "cur":"EUR",
            "sum":0,
            "rate":50
          }
        ]
      },{
        "id":null,
        "title":{"project":null,"client":null},
        "time":7204000,
        "total_currencies":[],
        "items":[
          {
            "title":{"time_entry":"No title yet"},
            "time":1000,
            "cur":"EUR",
            "sum":0,
            "rate":50
          }
        ]
      }
    ]
  }

1 个答案:

答案 0 :(得分:6)

第一步将您的JSON转换为go结构。为此,我总是使用https://mholt.github.io/json-to-go/

这样的在线转换器
type AutoGenerated struct {
    TotalGrand      int `json:"total_grand"`
    TotalBillable   int `json:"total_billable"`
    TotalCurrencies []struct {
        Currency string `json:"currency"`
        Amount   int    `json:"amount"`
    } `json:"total_currencies"`
    Data []struct {
        ID    int `json:"id"`
        Title struct {
            Project string      `json:"project"`
            Client  interface{} `json:"client"`
        } `json:"title"`
        Time            int `json:"time"`
        TotalCurrencies []struct {
            Currency string `json:"currency"`
            Amount   int    `json:"amount"`
        } `json:"total_currencies"`
        Items []struct {
            Title struct {
                TimeEntry string `json:"time_entry"`
            } `json:"title"`
            Time int    `json:"time"`
            Cur  string `json:"cur"`
            Sum  int    `json:"sum"`
            Rate int    `json:"rate"`
        } `json:"items"`
    } `json:"data"`
}

然后

  • 将json文件读入字节数组,即使用http.NewRequest("GET", url, nil)client.Do(req)byte_array,err:=ioutil.ReadAll(resp.Body)
  • 使用makenew创建该结构的实例
  • 将字节数组处理为结构实例json.Unmarshal(byte_array, &instance_of_struct)

然后您将拥有一个包含JSON数据的结构