2017-06-13 15 views
0

我需要解组具有可以更改的值的json对象。一个典型的对象将具有作为一个示例中定义的以下属性:Go Lang如何使用可以变化的类型来表示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

在你去你会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) 
} 

这绝不是一种高效率或者智能的方式,我只是很快就把它们混合在一起。但我希望它传达这个概念。