泽西休息请求通用类型



我无法将通用 json 请求从客户端发送到服务器。这是我的服务和pojo课程。有人可以纠正我做错的地方吗?

服务:

@POST
@Path("/executeApp")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON}) 
public Response executeApp(Configuration configuration) {
}

配置类:这个类由任务列表组成,下面是任务抽象类。

@XmlRootElement
public class Configuration{

public Configuration() {
// TODO Auto-generated constructor stub
}
public  String udid;    
public boolean overrideExistingTask;     
public int repeatPeriodMinutes;
public List<? extends Task> tasks;
//Getters and setters 
}

任务类:


public abstract class Task {
public Task(){
}
public String testId; 
public int pauseSeconds; 
public int cycles;-
public abstract String getFriendlyName();
protected abstract Task<?> getTaskInstance();
//Getters and setters 
}

派生类 XXXX,YYYYY 都扩展了任务:

public class XXXXX extends Task{
String friendlyName = this.getClass().getSimpleName();
//Extra varibles 
public XXXXX()  {
super();
}
@Override
public String getFriendlyName() {        
return friendlyName;
}
@Override
protected Task<?> getTaskInstance() {  
}
}

使用 json 的客户端邮递员请求:

{ 
"udid":"123", 
"overrideExistingTask":"true",  
"repeatPeriodMinutes":"2",
"tasks":[{"XXXXX":{"testId":"testId", "pauseSeconds" :"5", "cycles":"2" ,"requestId":"123" ,"url":"url", "port":"port" , "udid":"udid" }}]
}

错误:

javax.ws.rs.ProcessingException: Error deserializing object from entity stream.</p>
The server encountered an unexpected condition that prevented it from fulfilling the request.
javax.servlet.ServletException: javax.ws.rs.ProcessingException: Error deserializing object from entity stream.

如果我传递空数组而不是 XXXXX,我能够在调试模式下看到配置类(udid,overrideExistingTask,repeatPeriodMinutes(的值,但任务值来自 []。用户可以传递XXXXX,YYYYY或两者的列表。有人可以建议我在哪里做错或缺少休息注释来定义泛型类型。

配置对象将无法解析提供的 JSON 输入。

配置中的任务字段是任务列表。在提供的JSON中,它是一个键为"XXXXX"的Map(/Object(列表,值是任务对象。

如果这是要使用的 JSON,则应将配置对象中的任务字段修改为

public List<Map<String,<? extends Task>> tasks;

应修改 JSON 输入以发送任务列表。

{
"udid": "123",
"overrideExistingTask": "true",
"repeatPeriodMinutes": "2",
"tasks": [{
"testId": "testId",
"pauseSeconds": "5",
"cycles": "2",
"requestId": "123",
"url": "url",
"port": "port",
"udid": "udid"
}
//More task objects here
]
}

相关内容

  • 没有找到相关文章

最新更新