【发布时间】:2016-09-23 17:23:55
【问题描述】:
我正在研究 JavaEE 7 的 JSON 处理,我有一个问题描述如下。
(在询问之前我已阅读以下信息但仍有疑问)
http://docs.oracle.com/javaee/7/tutorial/jsonp004.htm
How can I cast a JSONObject to a custom Java class?
How do I convert a JSONObject to class object?
1) 我有一个 REST Web 服务,它以 JSON 格式返回响应:
{"id":1141,"email":"user@organisation.com","enabled":"Y"}
2) 有一个对应的 JPA Entity 叫做 User
@Table(name = "USER")
@Entity
public class User {
@Id
@Column(name = "USER_ID")
private Long id;
@Column(name = "EMAIL")
private String email;
@Column(name = "ENABLED")
private String enabled;
3) 我有一个基于 Jersey 客户端 API 和 Java EE JSON 处理的客户端,它们调用此 Web 服务。
Maven 依赖:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.22.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
</dependency>
客户端代码:
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:7001/projectname/rest");
WebTarget resourceWebTarget = target.path("users").queryParam("email", "user@organisation.com");
Invocation.Builder invocationBuilder = resourceWebTarget.request(MediaType.APPLICATION_JSON);
Response response = invocationBuilder.get();
JsonReader reader = Json.createReader(response.readEntity(InputStream.class));
JsonObject jObject = reader.readObject();
User user = new User();
user.setId(jObject.getJsonNumber("id").longValue());
user.setEmail(jObject.getString("email"));
user.setEnabled(jObject.getString("enabled"));
最后是问题:
我应该创建像User = new User(); 这样的用户并手动设置所有属性还是存在更方便的方式来创建用户?
【问题讨论】:
-
外部 ID 与“本地”ID(主键)似乎是一种误解......