im正在jsf,java中的前端项目中工作。 我的应用程序消耗了API剩余部分,该剩余部分提供了JSON。我必须将该JSON映射到实体。 我的问题是我的一个实体与其他实体具有一对多关系,而我不知道该如何映射。
我有实体Usuario:
public class usuario {
private String usuario_pk;
private String codigo;
private List<penca> pencas;
...}
实体Penca:
public class penca {
private String penca_pk;
private String codigo;
...}
我的应用程序收到的JSON如下:
{"usuario_pk":"3",
"codigo":"terry",
"pencas":[{"penca_pk":"1","codigo":"penca1"}]}
要连接API,请执行GET,然后使用以下方法将JSON映射到实体im:
import com.constantes.constantes;
import com.entity.usuario;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
public class restClient {
private static final Logger LOGGER = Logger.getLogger(restClient.class.getName());
private restClient() {
}
public static WebTarget getWebTarget(String service) {
Client client = getClient();
WebTarget target = client.target(constantes.url+"/"+service+"/");
return target;
}
private static Client getClient() {
Client client = ClientBuilder.newClient();
return client;
}
public static <T> T invokeGet(WebTarget webTarget,Class<T> responseType, String primaryKey) {
Response response = webTarget.queryParam("pk", primaryKey).request(MediaType.APPLICATION_JSON).get();
return respond(response, responseType);
}
private static <T> T respond(Response response, Class<T> responseType) {
if (responseType == null){
return null;
} else if (responseType.isArray()) {
return (T) response.readEntity(new GenericType<>(responseType));
} else {
return response.readEntity(responseType);
}
}
}
将JSON映射到没有关系的实体可以很好地工作,但是问题是当实体具有关系时。 有人可以说我可行的解决方案吗?谢谢。