easyjson将数组解组到go结构中
我最近开始与golang和easyjson合作。现在我必须将json数组解组到结构中才能使用它。 这就是我得到的 传入的JSON数据如下所示easyjson将数组解组到go结构中,json,go,marshalling,unmarshalling,Json,Go,Marshalling,Unmarshalling,我最近开始与golang和easyjson合作。现在我必须将json数组解组到结构中才能使用它。 这就是我得到的 传入的JSON数据如下所示 [ { "Item1":true, "Item2":"hello", "Item3":{ "A": 1, }, }, ... ] 我的结构: package something //easyjson:json type Item struct
[
{
"Item1":true,
"Item2":"hello",
"Item3":{
"A": 1,
},
},
...
]
我的结构:
package something
//easyjson:json
type Item struct {
Item1 bool
Item2 string
Item3 SubItem
}
//easyjson:json
type SubItem struct {
A int
}
(我构建了*u easyjson.go文件)
下面是我将如何使用easyjson:
func ConvertJsonToItem(jsondata string) Item {
var item Item
lexer := jlexer.Lexer{Data: []byte(jsondata)}
item.UnmarshalEasyJSON(&lexer)
if lexer.Error() != nil {
panic(lexer.Error())
}
return Item
}
我知道这是行不通的,因为json由一个“Item”结构数组组成。但是写一些像
var items []Item
也不起作用,因为我无法在片上执行解组。
我使用easyjson是因为它是处理json数据的快速方式
所以我的问题是:如何使用easyjson处理对象数组
顺便说一下,我知道这个问题与这个问题类似,但用户使用内置json包,我已经/想要使用easyjson。
提前谢谢你。怎么样
//easyjson:json
type ItemSlice []Item
?
那么,你可以做什么
func ConvertJsonToItem(jsondata string) ItemSlice {
var items ItemSlice
lexer := jlexer.Lexer{Data: []byte(jsondata)}
items.UnmarshalEasyJSON(&lexer)
if lexer.Error() != nil {
panic(lexer.Error())
}
return items
}
如果您确实不想在外部代码中使用itemsicle
,您仍然可以在返回它之前将其转换回[]Item
(但您必须以稍后要封送它的另一种方式执行完全相同的操作…)