为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 解组 json 列表

Golang 解组 json 列表

Go
largeQ 2021-11-01 10:39:34
我一直在努力解析一个基本的数组响应。我的输入 JSON 有一个结构类型一致的列表。[{  "amount":"6.40000000",  "date":"1439165701",  "price":"350.26",  "tid":104159},{  "amount":"0.10025000",  "date":"1439162764",  "price":"351.03",  "tid":104150}]我的结构有一个嵌套的数组结构。type TransactionResponse struct {    Transaction []Transaction}type Transaction struct {    Amount string `json:"amount"`    Date   string `json:"date"`    Price  string `json:"price"`    tid    uint   `json:"tid"`}解析json的函数:func main() {    var transactions TransactionResponse    body, err := http.Get(url)    err = json.Unmarshal(body, &transactions)}我哪里错了?
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

解码为交易切片:


body, err := http.Get(url)

var transactions []Transaction

err = json.Unmarshal(body, &transactions)

此外,导出所有字段:


type Transaction struct {

  Amount string `json:"amount"`

  Date   string `json:"date"`

  Price  string `json:"price"`

  Tid    uint   `json:"tid"`

}


查看完整回答
反对 回复 2021-11-01
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

所以是的,花了一段时间......


TransactionResponse 不是结构类型。如果我将其设置为 Transaction 数组,它就可以正常工作。


package main


import "fmt"

import "encoding/json"


var body = `[

{

"amount":"6.40000000",

"date":"1439165701",

"price":"350.26",

"tid":104159

},

{

"amount":"0.10025000",

"date":"1439162764",

"price":"351.03",

"tid":104150

}

]

`


type TransactionResponse []Transaction


type Transaction struct {

Amount string `json:"amount"`

Date   string `json:"date"`

Price  string `json:"price"`

tid    uint   `json:"tid"`

}


func main() {

var transactions TransactionResponse


err := json.Unmarshal([]byte(body), &transactions)

if err != nil {

    panic(err)

}


fmt.Println(transactions)

}


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信