{ L:[{ N: "123"}, { N: "543"} ]}
是否有一种简单的方法来解组此类dynamodb属性值
答案 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)
}