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

如何使用JAXB将属性对象转换为JSON对象

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

如何使用JAXB将属性对象转换为JSON对象

对WebLogic不太熟悉,因此我不知道它使用的是哪个版本的Jersey(1.x或2.x),但是使用1.x,您可以简单地添加此依赖项

<dependency>    <groupId>com.sun.jersey</groupId>    <artifactId>jersey-json</artifactId>    <version>${jersey-version}</version></dependency>

这将取决于杰克逊。Jackson已经反序列化该

Properties
对象并将其序列化为JSON对象。

这是一个简单的测试

资源资源

@Path("/properties")public class PropertiesResource {    @GET    @Produces(MediaType.APPLICATION_JSON)    public Response getProperties() throws Exception {        FileInputStream fis = new FileInputStream("test.properties");        Properties props = new Properties();        props.load(fis);        return Response.ok(props).build();    }    @POST    @Consumes(MediaType.APPLICATION_JSON)    public Response postProperties(Properties properties) {        StringBuilder builder = new StringBuilder();        for (String key: properties.stringPropertyNames()) { builder.append(key).append("=")         .append(properties.getProperty(key)).append("n");        }        return Response.created(null).entity(builder.toString()).build();    }}

测试

public void testMyResource() throws Exception {    ClientConfig config = new DefaultClientConfig();    config.getClasses().add(JacksonJsonProvider.class);    config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);    Client c = Client.create(config);    WebResource resource = c.resource(Main.base_URI).path("properties");    String json = resource.accept("application/json").get(String.class);    System.out.println(json);    FileInputStream fis = new FileInputStream("test.properties");    Properties props = new Properties();    props.load(fis);    String postResponse  = resource.type("application/json").post(String.class, props);    System.out.println(postResponse);}

结果:

// from get{"prop3":"value3","prop2":"value2","prop1":"value1"}// from postprop3=value3prop2=value2prop1=value1

对于配置,您只需要配置POJOMapping功能并注册Jackson提供程序

程式化

public class JerseyApplication extends ResourceConfig {    public JerseyApplication() {        packages(...);        getProviderClasses().add(JacksonJsonProvider.class);        getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);    }}

web.xml

<init-param>    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>    <param-value>true</param-value></init-param>

使用Jersey 2.x ,它会更简单一些。我们只需要这个提供者

<dependency>    <groupId>com.fasterxml.jackson.jaxrs</groupId>    <artifactId>jackson-jaxrs-json-provider</artifactId>    <version>2.4.0</version></dependency>

并注册相同的

JacksonJaxbJsonProvider
(尽管不同的包,类名是相同的)。不需要Pojo映射功能。


注意: 在两种情况下,都有两个Jackson提供程序,a

JacksonJsonProvider
和a
JacksonJaxbJsonProvider
。如果希望pojos的编组依赖于JAXB批注,则应注册后者。



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

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

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