Marhall / unmarshall JSON将数组作为顶级元素

时间:2015-12-08 14:33:24

标签: json jaxb

我需要将具有数组的JSON解组为顶级元素:

[
    {
        "test1": 
        {
            "name": "Boost",
            "fraction": 0.55
        }
    },
    {
        "test2": 
        {
            "name": "Boost",
            "fraction": 0.55
        }
    }
]

我的顶级元素如下所示:

import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;

public class Wrapper<T> {

    @XmlTransient
    private List<T> items;

    public Wrapper() {
        items = new ArrayList<>();
    }

    public Wrapper(List<T> items) {
        this.items = items;
    }

    @XmlElement
    public List<T> getItems() {
        return items;
    }

}

解组是在这种方法中完成的:

private <T> T get(String path, Class<T> aClass) {
    WebTarget target = root.path(path);
    Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE);
    return request.get(aClass);
}

当我尝试将现有对象编组到json中时,我得到以下结果:

    {
   "items" : [
        {
            "test1": 
            {
                "name": "Boost",
                "fraction": 0.55
            }
        },
        {
            "test2": 
            {
                "name": "Boost",
                "fraction": 0.55
            }
        }
    ]}

如何强制JAXB跳过此items键?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我使用GenericType new GenericType<List<MyObject>>() {}

解决了这个问题