【发布时间】:2020-09-12 21:09:53
【问题描述】:
我正在使用 Connect API 从特定实例获取所有联系流,并希望将它们存储在 DynamoDB 中。
type contactFlow struct {
Arn string
ContactFlowType string
Id string
Name string
}
func HandleRequest(ctx context.Context) (string, error) {
var contactFlowDetails []contactFlow
mySession := session.Must(session.NewSession())
connectSession := connect.New(mySession)
connectInstance := &connect.ListContactFlowsInput{
InstanceId: aws.String("INSTANCE_ID"),
}
connectResult, connectError := connectSession.ListContactFlows(connectInstance)
connectResultFlow := connectResult.ContactFlowSummaryList
connectFlowSummaryList := awsutil.Prettify(connectResultFlow)
fmt.Println(connectFlowSummaryList)
json.Unmarshal([]byte(connectFlowSummaryList), &contactFlowDetails)
fmt.Println(contactFlowDetails)
我尝试使用的 API 是这样的:https://docs.aws.amazon.com/sdk-for-go/api/service/connect/#ListContactFlowsOutput
当我在 CloudWatch Logs 上打印出 connectFlowSummaryList 时,我确实得到了结果,但是当我打印出 contactFlowDetails 时它总是返回一个空数组 []。
编辑 1:我想我在解码时发现了潜在的问题。日志的结果如下所示:
[
{
Arn: "INSTANCE_ID",
ContactFlowType: "AGENT_WHISPER",
Id: "CONTACT_FLOW_ID",
Name: "Default agent whisper"
}
]
结果的键值不在双引号内,我该如何解码这样的结果?
谢谢!
【问题讨论】:
-
检查json.Unmarshal的错误
-
我认为这是您的 JSON 解码的问题。请尝试使用您要解码的字符串和解组代码创建一个简单的测试程序。隔离问题将使人们(甚至您)更容易理解它。 (例如,我对 AWS 一无所知,但对 Go 中的 JSON 解码了解很多。)
-
我确实查看了日志,似乎发现了一个潜在的问题。如何将这样的字符串解码为 JSON 格式?
-
awsutil.Prettify在 data 上给出你的字符串表示,使用jsonData, err := json.Marshal(connectResultFlow)获取 json 数据,然后使用json.Unmarshal(jsonData, &contactFlowDetails)或在 struct 中设置 maually 数据。 -
非常感谢,这解决了问题:)
标签: json amazon-web-services api go amazon-connect