[英]java - how to parse two parameters on REST Web Service?
我试图解析RESTful Web服务上的两个参数:一个简单的对象和另一个参数的List
。 我正在使用jersey-bundle-1.19.1.jar
和gson-2.4.jar
。 该应用程序很好地捕获了第一个,但第二个始终为null
。
这是资源的代码:
/* Package and imports*/
@Path("compra")
public class CompraResource {
@Context
private UriInfo context;
// Class with connection to database, works well
private final CompraService service;
private final Gson json;
/**
* Creates a new instance of CompraResource
*/
public CompraResource() {
this.service = new CompraService();
this.json = new GsonBuilder().setDateFormat(Metodos.Parametros.FECHA_FORMATO).create();
}
/**
* PUT method for updating or creating an instance of CompraResource
* @param compra
* @param detalle
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Path("registro")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String putJson(Compra compra, List<DetalleCompra> detalle) {
return this.json.toJson(this.service.registrarCompra(compra, detalle), Boolean.class);
}
}
这是我正在尝试使用此方法解析的json:
{
"id":"0",
"fecha":"2017-01-20",
"total":"0",
"usuario":"jjuarezo"
},
[
{
"id":"0",
"cantidad":"2",
"idArticulo":"1",
"idCompra":"0"
}
]
json结构中是否存在语法错误? 谢谢。
你需要写一个包装类( dto
包含的参考) Compra
的引用和列表DetalleCompra
,如:
public class Request {
private Compra compra;
private List<DetalleCompra> detalle;
//Getters and setters
}
然后,您可以将putJson
方法更改为putJson
方法:
public String putJson(Request request) {
//Call getCompra and getDetalle to access the members
另外,您的json
似乎无效(请在此处验证),它看起来应该像这样:
{
"compra": {
"id": "0",
"fecha": "2017-01-20",
"total": "0",
"usuario": "jjuarezo"
},
"detalle": [{
"id": "0",
"cantidad": "2",
"idArticulo": "1",
"idCompra": "0"
}]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.