使用 JSON-B 从 JSON 中提取特定元素
Extract specific element from JSON using JSON-B
使用 Jackson,我们可以从 JSON 字符串中提取特定元素并将其映射到相关的 class,如下所示:
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(someJson);
JsonNode responseNode = root.get("response");
MyResponse myResponse = mapper.treeToValue(responseNode, MyResponse.class);
如何使用 JSON-B 实现同样的效果?
进一步阅读后,我似乎不应该尝试使用 JSON-B.
JSON-B用于映射JSON<->对象,其中JSON-P是用于解析 JSON.
所以我们可以一起使用 JSON-P + JSON-B 来完成 Jackson 可以做的事情:
JsonReader jsonReader = Json.createReader(new StringReader(someJson));
JsonObject root = jsonReader.readObject();
JsonObject responseJsonObj = root.getJsonObject("response");
Jsonb jsonb = JsonbBuilder.create();
MyResponse myResponse = jsonb.fromJson(responseJsonObj.toString(), MyResponse.class);
jsonReader.close();
使用 Jackson,我们可以从 JSON 字符串中提取特定元素并将其映射到相关的 class,如下所示:
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(someJson);
JsonNode responseNode = root.get("response");
MyResponse myResponse = mapper.treeToValue(responseNode, MyResponse.class);
如何使用 JSON-B 实现同样的效果?
进一步阅读后,我似乎不应该尝试使用 JSON-B.
JSON-B用于映射JSON<->对象,其中JSON-P是用于解析 JSON.
所以我们可以一起使用 JSON-P + JSON-B 来完成 Jackson 可以做的事情:
JsonReader jsonReader = Json.createReader(new StringReader(someJson));
JsonObject root = jsonReader.readObject();
JsonObject responseJsonObj = root.getJsonObject("response");
Jsonb jsonb = JsonbBuilder.create();
MyResponse myResponse = jsonb.fromJson(responseJsonObj.toString(), MyResponse.class);
jsonReader.close();