2017-06-13 80 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) 
} 

這絕不是一種高效率或者智能的方式,我只是很快就把它們混合在一起。但我希望它傳達這個概念。

相關問題