【问题标题】:@xmlrootelement json equivalent@xmlrootelement json 等效项
【发布时间】:2014-05-20 06:16:27
【问题描述】:

这是我用来填充和发送它作为我的网络服务请求调用的一部分的类:

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class ClientInfo {

    private String langCode;
    private String userId;
    private String password;
    private String ShipTo;
    private String timeZone;
    public String getLangCode() {
        return langCode;
    }
    public void setLangCode(String langCode) {
        this.langCode = langCode;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getShipTo() {
        return ShipTo;
    }
    public void setShipTo(String shipTo) {
        ShipTo = shipTo;
    }
    public String getTimeZone() {
        return timeZone;
    }
    public void setTimeZone(String timeZone) {
        this.timeZone = timeZone;
    }

}

当我为这个类使用Entity.xml() 来解析类并启动请求时,一切正常,我得到了结果,这是服务调用代码的一部分。 Entity.xml()请看最后一行;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.glassfish.jersey.client.ClientConfig;

ClientInfo ci = new ClientInfo();
ci.setLangCode("en");
ci.setPassword("password@123");
ci.setShipTo("0000");
ci.setTimeZone("420");
ci.setUserId("user1");
Invocation.Builder invocationBuilder = resourceWebTarget.request(MediaType.APPLICATION_XML);
Response response = invocationBuilder.post(Entity.xml(ci));

但是,如果我将 Entity.xml(ci) 更改为 Entity.json(ci),它会抛出异常。例外情况如下:

Apr 07, 2014 3:54:08 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
SEVERE: MessageBodyWriter not found for media type=application/json, type=class com.sheidaei.sample.appleclient.ClientInfo, genericType=class com.sheidaei.sample.appleclient.ClientInfo.

根据我的阅读,我的理解是应用程序找不到 ClientInfo 类的 JSON 表示。是否有一种简单的方法(例如注释),以便 Entity.json() 轻松找到 ClientInfo 的 JSON 表示?

【问题讨论】:

  • com.telus.sample.appleclient.ClientInfo & com.sheidaei.sample.appleclient.ClientInfo 它们之间有什么关系?

标签: java json jersey


【解决方案1】:

默认情况下,Jersey 提供对 JAXB 注释类和 XML 编组/解组的支持。要使用 JSON,您需要具有适当配置的适当实体提供程序。

Jersey 文档提供了详细信息:https://jersey.java.net/documentation/1.18/json.html

【讨论】:

    猜你喜欢
    • 2010-12-09
    • 2013-08-15
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2010-10-20
    • 2022-01-17
    • 2013-09-27
    • 2016-01-07
    相关资源
    最近更新 更多