在jax-rs上获取json对象数据

时间:2014-12-05 17:20:27

标签: java json jax-rs

我在我的web服务上有这个put方法,这个方法使用了一个json对象,但是如果方法接收到一个带有name,surname,afiliation和country fields的json对象,我怎么能在我的方法中获取这些数据?

@PUT
@Path("/Updatemember/{nom}/{ape}/{afi}/{nac}")
@Consumes({"application/json"})
@Produces(MediaType.TEXT_PLAIN)
public String Updatemember(@PathParam("nom")String nombre, @PathParam("ape")String apellido, 
                            @PathParam("afi")String afiliacion, @PathParam("nac")String nacionalidad) throws SQLException
{
    Miembro.update(nombre, apellido, afiliacion, nacionalidad);
    return "Data has been updated";
}

编辑:  现在方法是

@PUT
@Path("/Updatemember/")
@Consumes({"application/json"})
@Produces(MediaType.TEXT_PLAIN)
public String Updatemember(Miembro miembro) throws SQLException
{
    miembro.update();
    return "Se han actualizado los datos del miembro";
}

和类成员(西班牙语中的miembro)有这个方法,工作正常。

public void update() throws SQLException
{
    Connection conexion = Conexion.GetConnection();
    String sql = "UPDATE miembros SET afiliacion='"+getAfiliacion()+"', nacionalidad='"+getNacionalidad()+"' WHERE nombre='"+getNombre()+"' AND apellidos='"+getApellidos()+"'";
    PreparedStatement pre = (PreparedStatement) conexion.prepareStatement(sql);
    pre.execute();
}

Updatemember给了我一个Nullpoiter异常,miembro对象没有创建,但我不知道为什么。

1 个答案:

答案 0 :(得分:0)

你的方法签名是说你接受了四个路径参数(不是json - 你可以将queryParams作为json)。

如果您创建一个名为Member的类,并将这些参数作为该类的成员:

@XmlRootElement
 public class Member {
      // public constructor 
      // getters and setters for your fields
 }

然后让该类成为您方法的参数,并将路径更改为@Path(“/ UpdateMember / {id}”)。

如果确保在类路径上有jackson或moxy,则Member参数应该是类Member的有效对象实例。

在这里阅读球衣文档:https://jersey.java.net/documentation/latest/media.html#json