JSON中的匿名字段

时间:2015-09-05 00:18:18

标签: json go

我正在对一些似乎使用匿名字段名称的JSON进行逆向工程。例如:

{
   "1": 123,
   "2": 234,
   "3": 345
}
顺便说一下 - 它不仅仅是使用" 1"和" 2"和" 3"因为它们代表至少int32的用户标识。

是否有某些方法可以使用标记来正确解组JSON?

我试过了:

package main

import (
        "encoding/json"
        "fmt"
)

type MyStruct struct {
        string `json:",string"`
}

func main() {
        jsonData := []byte("{\"1\":123,\"2\":234,\"3\":345}")

        var decoded MyStruct
        err := json.Unmarshal(jsonData, &decoded)
        if err != nil {
                panic(err)
        }
        fmt.Printf("decoded=%+v\n", decoded)
}

1 个答案:

答案 0 :(得分:4)

只需将数据解码为地图(map[string]int):

jsonData := []byte("{\"1\":123,\"2\":234,\"3\":345}")

var decoded map[string]int
err := json.Unmarshal(jsonData, &decoded)
if err != nil {
    panic(err)
}

然后,您将能够通过用户ID键迭代并访问元素:

for userID, _ := range decoded {
    fmt.Printf("User ID: %s\n", userID)
}

https://play.golang.org/p/SJkpahGzJY