栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用jaxb注释使用Jersey将json编组到Java bean时如何使用一些间接

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用jaxb注释使用Jersey将json编组到Java bean时如何使用一些间接

带注释的类 应该 是双射的:它 应该
允许生成从中解组出来的相同输入。如果仍然要使用非双目对象图,则可以使用

@XmlAnyElement
以下方式:

public class Issue {    @XmlElement(required = true)    protected Fields fields;    public Fields getFields() {        return fields;    }}

在您提供的输入中,字段不是列表,而是字段(JSON使用[]分隔列表):

public class Fields {    @XmlElement(required = true)    protected Summary summary;    @XmlAnyElement    private List<Element> fields;    public List<Element> getFields() {        return fields;    }    public Summary getSummary() {        return summary;    }}

为了捕获Summary,您必须定义一个专用的类。其余字段将在

fields
元素列表中分组。

public class Summary {    @XmlAttribute    protected String name;    public String getName() {        return name;    }}

下面,使用您的输入进行的单元测试表明一切正常:

public class JaxbTest {    @Test    public void unmarshal() throws JAXBException, IOException {        URL xmlUrl = Resources.getResource("json.txt");        InputStream stream = Resources.newInputStreamSupplier(xmlUrl).getInput();        Issue issue = parse(stream, Issue.class);        assertEquals("summary", issue.getFields().getSummary().getName());        Element element = issue.getFields().getFields().get(0);        assertEquals("customfield_10080", element.getTagName());        assertEquals("name", element.getFirstChild().getLocalName());        assertEquals("Testeur", element.getFirstChild().getFirstChild().getTextContent());    }    private <T> T parse(InputStream stream, Class<T> clazz) throws JAXBException {        JSonUnmarshaller unmarshaller = JsonContextNatural().createJSonUnmarshaller();        return unmarshaller.unmarshalFromJSON(stream, clazz);    }    private JSonJAXBContext JsonContextNatural() throws JAXBException {        return new JSonJAXBContext(JSONConfiguration.natural().build(), Issue.class);    }}

该测试表明,不使用专用类,您的代码将很快变得难以阅读。

您将需要那些maven依赖项来运行它:

<dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.8.2</version>    <scope>test</scope></dependency><dependency>    <groupId>com.google.guava</groupId>    <artifactId>guava</artifactId>    <version>r08</version></dependency><dependency>    <groupId>com.sun.jersey</groupId>    <artifactId>jersey-json</artifactId>    <version>1.6</version></dependency>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515845.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号