英文:
How can I get this type of data in Go lang?
问题
你可以使用Go语言中的结构体来解析这个API响应数据。首先,你需要定义一个与API响应数据结构相匹配的结构体类型。然后,使用json.Unmarshal
函数将API响应数据解析为该结构体类型的实例。
以下是一个示例代码,展示了如何在Go语言中解析该API响应数据:
package main
import (
"encoding/json"
"fmt"
)
type Response struct {
Result int `json:"result"`
Message string `json:"message"`
Pds []Product `json:"pds"`
Request RequestInfo `json:"request"`
}
type Product struct {
State string `json:"state"`
Code int `json:"code"`
Name string `json:"name"`
Price int `json:"price"`
}
type RequestInfo struct {
Op string `json:"op"`
}
func main() {
data := `{
"result": 1,
"message": "",
"pds": [
{
"state": "Y",
"code": 13,
"name": "AAA",
"price": 39900
},
{
"state": "Y",
"code": 12,
"name": "BBB",
"price": 38000
}
],
"request": {
"op": "new"
}
}`
var response Response
err := json.Unmarshal([]byte(data), &response)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Result:", response.Result)
fmt.Println("Message:", response.Message)
fmt.Println("Request Op:", response.Request.Op)
for _, pd := range response.Pds {
fmt.Println("Product Name:", pd.Name)
fmt.Println("Product Price:", pd.Price)
}
}
在上面的示例代码中,我们定义了三个结构体类型:Response
、Product
和RequestInfo
,分别对应API响应数据的不同部分。然后,我们使用json.Unmarshal
函数将API响应数据解析为Response
类型的实例。通过访问该实例的字段,你可以获取到相应的数据。
希望这可以帮助到你!如果你有任何其他问题,请随时问我。
英文:
This is API response data, looks like this.
{
"result":1,
"message":"",
"pds": [
{
"state":"Y",
"code":13,
"name":"AAA",
"price":39900,
},
{
"state":"Y",
"code":12,
"name":"BBB",
"price":38000,
}
],
"request":
{
"op":"new",
}
}
How can I get this data in Go lang?
I tried json.Unmarshall
and get with map[string]interface{}
but it looks like I used the wrong type to get the data.
Should I use structure??
答案1
得分: 2
你需要创建一个结构体来正确处理,如果你不想让json.Unmarshal
的输出是map[string]interface{}
类型的。
如果你将这个JSON对象映射到一个Go结构体,你会发现以下结构:
type APIResponse struct {
Result int `json:"result"`
Message string `json:"message"`
Pds []struct {
State string `json:"state"`
Code int `json:"code"`
Name string `json:"name"`
Price float64 `json:"price"`
} `json:"pds"`
Request struct {
Op string `json:"op"`
} `json:"request"`
}
你还可以在这里找到一个很棒的工具,用于将JSON对象转换为Go结构体。
英文:
You need to create a struct to handle this properly if you don't want the json.Unmarshall
output to be a map[string]interface{}
.
If you map this JSON object to a Go struct you find the following structure:
type APIResponse struct {
Result int `json:"result"`
Message string `json:"message"`
Pds []struct {
State string `json:"state"`
Code int `json:"code"`
Name string `json:"name"`
Price float64 `json:"price"`
} `json:"pds"`
Request struct {
Op string `json:"op"`
} `json:"request"`
}
You also can find a great tool to convert JSON objects to Go structs here
答案2
得分: -1
如果你不想使用原生的json.Unmarshall
,这里有一个很好的选择,可以使用包go-simplejson。
英文:
If you don't want to use the native json.Unmarshall
, here's a good option to use the package go-simplejson.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论