【发布时间】:2015-05-10 10:05:22
【问题描述】:
我有一个由浏览器发布的 json。这是一个带有
的哈希var id int64 = 123
比如说,三个像这样的字段:
myJson := `{
"a":"{'x1':'apple','x2':'orange'}",
"b":"{'y1':345678,'y2':32456}",
"c":"['alpha@example1.com', 'beta@example2.com']"}`
然后使用 redigo 和命令将其存储在 Redis 中:
HMSET id:123 a "{'x1':'apple','x2':'orange'}" b "{'y1':345678,'y2':32456}" c "['alpha@example1.com', 'beta@example2.com']"
现在,我想在 Go 中使用这样的模型
type Model struct {
A string `json:"a"`
B string `json:"b"`
C string `json:"c"` // Unknown length of map at runtime
}
1.我用
调用Redisv, _ := redis.Values(c.Do("HGETALL", "id:123"))
我通过 redis-cli 看到正确存储的值,但是将 v 回复转换为 Model 结构不起作用:
var model Model
if err := redis.ScanStruct(v, &model); err != nil {
panic(err)
}
fmt.Printf("c %#v\n", model.C) => empty []
我想访问单独的 k:v 对,例如:
B.y2 = 32456
C[0] = "alpha@example1.com"
2. 我还想将 json.Marshal myJson 作为 {a}、{a,b}、{a,c 的组合返回浏览器}、{a,b,c} 等。我不确定如何将各种 a、b、c 字段组合组合成一个进行编组。
任何帮助将不胜感激。
【问题讨论】: