easyjson将数组解组到go结构中

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

我最近开始与golang和easyjson合作。现在我必须将json数组解组到结构中才能使用它。 这就是我得到的

传入的JSON数据如下所示

[
    {
        "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
(但您必须以稍后要封送它的另一种方式执行完全相同的操作…)