在列表中使用不同类型去解组JSON
我在解组JSON结构时遇到了麻烦:
{
"id": 10,
"result": [
{
"bundled": true,
"type": "RM-J1100"
},
[
{
"name": "PowerOff",
"value": "AAAAAQAAAAEAAAAvAw=="
},
{
"name": "Input",
"value": "AAAAAQAAAAEAAAAlAw=="
}
]
]
}
我实际上需要结果中的第二个切片项。
我目前的尝试是
type Codes struct {
Id int32 `json:"id"`
Result []interface{} `json:"result"`
}
type ResultList struct {
Info InfoMap
Codes []Code
}
type InfoMap struct {
Bundled bool `json:"bundled"`
Type string `json:"type"`
}
type Code struct {
Name string `json:"name"`
Value string `json:"value"`
}
输出是这样的:
{10 {{false } []}}
但是我也尝试使用这个:
type Codes struct {
Id int32 `json:"id"`
Result []interface{} `json:"result"`
}
输出正常:
{10 [map[type:RM-J1100 bundled:true] [map[name:PowerOff value:AAAAAQAAAAEAAAAvAw==] map[name:Input value:AAAAAQAAAAEAAAAlAw==]]]}
我还可以引用Result [1]索引:
[map[name:PowerOff value:AAAAAQAAAAEAAAAvAw==] map[name:Input value:AAAAAQAAAAEAAAAlAw==]]
但是我无法将接口类型转换为任何其他匹配类型。谁能告诉我如何进行界面转换。哪种方法才是“最佳”。
-
一种选择是将顶级事物解组为
json.RawMessage
最初的一部分。然后遍历成员,并查看每个成员的第一个字符。如果它是一个对象,则将其解组到您的
InfoMap
标头结构中;如果它是一个数组,则将其解组到该Code
结构的一个切片中。或者,如果可以预测的话,只需将第一个成员解组为一个结构,将第二个成员解构为切片。
type Response struct { ID int `json:"id"` RawResult []json.RawMessage `json:"result"` Header *Header `json:"-"` Values []*Value `json:"-"` } type Header struct { Bundled bool `json:"bundled"` Type string `json:"type"` } type Value struct { Name string `json:"name"` Value string `json:"value"` } func main() { //error checks ommitted resp := &Response{} json.Unmarshal(rawJ, resp) resp.Header = &Header{} json.Unmarshal(resp.RawResult[0], resp.Header) resp.Values = []*Value{} json.Unmarshal(resp.RawResult[1], &resp.Values) }
-
在Swift中使用不同类型覆盖超类属性
2021-01-31 关注 0 浏览104 1答案
-
在Oracle中使用不同类型的PL / SQL集合的目的
2021-04-20 关注 0 浏览103 1答案
-
如何在Java中使用多态来制作具有不同类型的列表?
2021-01-30 关注 0 浏览80 1答案
-
如何正确解组不同类型的数组?
2021-02-01 关注 0 浏览91 1答案
-
通过使用不同的类型参数,函数模板可以生成不同类型的函数。
2020-12-25 关注 0 浏览177 1答案
-
如何解组具有不同值类型的json数组
2021-02-01 关注 0 浏览80 1答案
-
为什么Java中允许使用不同类型的对象引用?
2021-01-29 关注 0 浏览99 1答案
-
React PropTypes:允许一个 prop 使用不同类型的 PropTypes
2022-04-11 关注 0 浏览19 1答案
-
React PropTypes:允许一个道具使用不同类型的PropType
2021-01-31 关注 0 浏览83 1答案
-
将JSON解组为类型
2021-02-01 关注 0 浏览77 1答案