如何转换*elbv2.在goLang中输出到JSON以执行数据解析



我一直在尝试使用AWS Go SDK版本2。我得到一个我想要转换的响应我从descripbeloadbalancer ()函数转换成JSON,这样我就可以解析它并执行进一步的操作,但当我尝试遵循如何解析JSON在这里描述https://blog.alexellis.io/golang-json-api-client/。我在编译器中得到一个错误,我不能转换*elbv2。DescribeLoadBalancersOutput[]字节. 我尝试了不同的方法,即尝试转换*elbv2。DescribeLoadBalancersOutput字符串等,但我总是得到相同的错误,即不能转换*elbv2。DescribeLoadBalancersOutput转换为指定的类型。因此,我们希望了解执行所需操作的最佳方式。这是我的代码。

package main
import (
"encoding/gob"
"fmt"
"reflect"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/elbv2"
)
type LoadBalancerARN struct {
loadBalancerARN string
}
func main() {
session, error := session.NewSession(&aws.Config{
Region: aws.String("eu-central-1"),
})
if error != nil {
fmt.Printf("Cannot create a session, %v", error)
}
service := elbv2.New(session)
input := &elbv2.DescribeLoadBalancersInput{}
getLoadBalancersJson, error := service.DescribeLoadBalancers(input)
if error != nil {
if aerr, ok := error.(awserr.Error); ok {
switch aerr.Code() {
case elbv2.ErrCodeLoadBalancerNotFoundException:
fmt.Println(elbv2.ErrCodeLoadBalancerNotFoundException, aerr.Error())
default:
fmt.Println(aerr.Error())
}
} else {
fmt.Println(error.Error())
}
return
}
encodinglbJson := gob.NewEncoder(getLoadBalancersJson)
//var arn LoadBalancerARN
fmt.Println(getLoadBalancersJson)
fmt.Println(reflect.TypeOf(getLoadBalancersJson))
}

所以,我已经找到了上面的方法,最好的方法是,AWS提供了一个LoadBalancer函数来转换*elbv2。DescribeLoadBalancersOutput转换为*[]elbv2类型的对象。LoadBalancer然后你可以使用json将该对象转换为字节数组。函数,然后根据需要执行解析。

这是代码

type LoadBalancerJSONStructure struct {
LoadBalancerArn       string
DNSName               string
CanonicalHostedZoneId string
CreatedTime           string
LoadBalancerName      string
Scheme                string
VpcId                 string
Type                  string
IpAddressType         string
}
response, error := json.Marshal(getLoadBalancers.LoadBalancers)
if error != nil {
fmt.Println("Error, %v", error)
}
fmt.Println(reflect.TypeOf(getLoadBalancers.LoadBalancers))
var lbJson LoadBalancerJSONStructure
err := json.Unmarshal(response, &lbJson)
if err != nil {
fmt.Println(err)
}
fmt.Printf("Struct is: ", lbJson)

最新更新