我需要解组具有可以更改的值的json对象。作为示例,典型对象将定义以下属性:
{
"entityName": "example Property",
"properties": [
{
"name": "property1",
"type": "string",
"value": "Test Value"
},
{
"name": "property2",
"type": "float",
"value": "12.5"
},
{
"name": "property3",
"type": "integer",
"value": 1
}
]
}
每个属性都会将自己声明为需要解组的类型。我使用泛型在Java中解决了这个问题,但我不确定,我将如何在Go中声明我的对象?
答案 0 :(得分:0)
在go中,您将使用JSON库将JSON编码的数据解析为结构。因此,对于您的示例,假设您从网页获取数据。
package main
import (
"encoding/json"
"fmt"
"net/http"
"io/ioutil"
)
type Payload struct {
EntityName string
properties Properties
}
type Properties struct{
name string
type string
value string
}
func main() {
url := "some site where data is stored"
res, err := http.Get(url)
if err != nil {
panic (err)
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
panic(err)
}
var p Payload
err = json.Unmarshal(body, &p)
if err != nil{
panic (err)
}
fmt.Println(p.EntityName\n, p.properties)
}
这绝不是一种有效或聪明的方法,我只是很快就把它们搞得一团糟。但我希望它传达了这个概念。