有没有更简单的方法来解组dynamodb属性值

时间:2019-11-23 07:19:25

标签: amazon-web-services go amazon-dynamodb

{ L:[{ N: "123"}, { N: "543"} ]}

是否有一种简单的方法来解组此类dynamodb属性值

2 个答案:

答案 0 :(得分:0)

键(L,N)周围没有双引号,因此您将无法使用json.unmarshal函数将其取消编组。您可以尝试以下方法解组提到的json字符串。

package main

import (
    "encoding/json"
    "fmt"
    "strings"
)

type Response struct {
    L []InnerElement `json:"L"`
}

type InnerElement struct {
    N string `json:"N"`
}

func main() {

    st := `{L:[{ N: "123"},{ N: "543"}]}`
    st = strings.Replace(st,"N",`"N"`,2)
    st = strings.Replace(st,"L",`"L"`,1)

    var res Response

    err := json.Unmarshal([]byte(st), &res)

    if err!=nil{
        fmt.Print("error with json unmarshaling")
    }

   //print value
   fmt.Println(res.L)


}

用双引号代替键。

答案 1 :(得分:0)

我假设您使用的是aws-sdk-go软件包,并且输出来自扫描或查询结果。如果是这样,则子软件包dynamodbattribute提供了将dynamodb.AttributeValue转换为您的结构的解编组实用程序:

// var result *dynamodb.ScanOutput

// This can be a list of struct too, but your sample output looks like a list of numbers.
nums := make([]int, 0, *result.Count)
if err := dynamodbattribute.UnmarshalListOfMaps(result.Items, &nums); err != nil {
    // handle error
} else {
    fmt.Println(nums)
}