gpt4 book ai didi

json - 使用 Jersey 2.0 (JAX-RS 2.0) 读取 JSON

转载 作者:行者123 更新时间:2023-12-02 17:43:32 28 4
gpt4 key购买 nike

我使用 Jersey 1.16 来使用 JSON,但现在我很难使用 Jersey 2.0(实现 JAX-RS 2.0)来使用 JSON。

我有一个像这样的 JSON 响应:

{
"id": 105430,
"version": 0,
"cpf": "55443946447",
"email": "maria@teste.br",
"name": "Maria",
}

以及使用它的方法:

public static JSONObject get() {
String url = "http://127.0.0.1:8080/core/api/person";
URI uri = URI.create(url);

final Client client = ClientBuilder.newClient();
WebTarget webTarget = client.target(uri);

Response response = webTarget.request(MediaType.APPLICATION_JSON).get();

if (response.getStatus() == 200) {
return response.readEntity(JSONObject.class);
}
}

我也试过:

return webTarget.request(MediaType.APPLICATION_JSON).get(JSONObject.class);

但是jSONObject 返回的是null。我不明白我的错误,因为响应正常!

最佳答案

正确使用 Response 类型的方法如下:

  private void getRequest() {
Client client = ClientBuilder.newClient();

String url = "http://localhost:8080/api/masterdataattributes";
WebTarget target = client.target(url);

Response res = target
.request(MediaType.APPLICATION_JSON)
.get();

int status = res.getStatus();
String json = res.readEntity(String.class);

System.out.println(String.format("Status: %d, JSON Payload: %s", status, json));
}

如果您只对负载感兴趣,您也可以只发出一个 get(String.class)。但通常您还想检查响应状态,因此使用 Response 通常是可行的方法。

如果您想要一个类型化的(通用的)JSON 响应,您也可以让 readEntity 返回一个 Map,或者如果响应是一个对象数组,则返回一个 Map 列表,如本例所示:

List<Map<String, Object>> json = res.readEntity(new GenericType<List<Map<String, Object>>>() {});
String id = (String) json.get(0).get("id");
System.out.println(id);

关于json - 使用 Jersey 2.0 (JAX-RS 2.0) 读取 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17690835/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com