2016-02-17 5 views
0

Я использую следующий пример программы:как разобрать ответ от AWS Go API

func getEnv(appName string, env string) { 
    svc := elasticbeanstalk.New(session.New(), &aws.Config{Region: aws.String("us-east-1")}) 

    params := &elasticbeanstalk.DescribeConfigurationSettingsInput{ 
     ApplicationName: aws.String(appName), // Required 
     EnvironmentName: aws.String(env), 
    } 
    resp, err := svc.DescribeConfigurationSettings(params) 

    if err != nil { 
     fmt.Println(err.Error()) 
     return 
    } 
    v := resp.ConfigurationSettings 
    fmt.Printf("%s", v) 
} 

Это распечатывания следующий ответ; это выглядит как действительный json, за исключением пропущенных цитат. ex: ApplicationName, а не «ApplicationName».

Как это разобрать? или получить действительный json от AWS?

ConfigurationSettings: [{ 
      ApplicationName: "myApp", 
      DateCreated: 2016-01-12 00:10:10 +0000 UTC, 
      DateUpdated: 2016-01-12 00:10:10 +0000 UTC, 
      DeploymentStatus: "deployed", 
      Description: "Environment created from the EB CLI using \"eb create\"", 
      EnvironmentName: "stag-myApp-app-s1", 
      OptionSettings: [ 
      ... 
+0

'resp.ConfigurationSettings' не нужно быть разобрано, это уже' [] * ConfigurationSettingsDescription'. – JimB

ответ

1

resp.ConfigurationSettings не в формате JSON больше, то aws-sdk-go пакет обрабатывается, что для вас. Когда вы делаете,

v := resp.ConfigurationSettings 

v содержит экземпляр []*ConfigurationSettingsDescription, который был проанализирован из ответа JSON, и вам не придется разобрать его самостоятельно. То, что вы видите при распечатке, - это представление структуры Go. Вы можете просто идти вперед и использовать его:

if len(v) > 0 { 
    log.Println(v[0].ApplicationName) 
} 

Это необходимо распечатать myApp