У меня есть ответ json с сервера.Получить jersey/jackson json в несколько классов
{"session_key":"thekey","expires_in":300,"environment":"exttest","country":"SE","private_feed":{"hostname":"priv.api.test.nordnet.se","port":443,"encrypted":true},"public_feed":{"hostname":"pub.api.test.nordnet.se","port":443,"encrypted":true}}
Информация верхнего уровня разбирается в классе ниже. Но как я могу заполнить список информации о сервере?
Код
Response response = baseResource.path("login").queryParam("service", "NEXTAPI")
.queryParam("auth", authParam).request(responseType).post(null);
System.out.println(response);
SessionInfo ses = response.readEntity(SessionInfo.class);
public class SessionInfo {
public String session_key;
public String environment;
public int expires_in;
public String country;
List<ServerInfo> serverInfo = new ArrayList<ServerInfo>();
}
public class ServerInfo {
public String hostname;
public int port;
public boolean encrypted;
}
Это работает, но я надеюсь, что есть способ, чтобы преобразовать его в один шаг, так как там может быть более вложенных уровней в других ответах.
ObjectMapper mapper = new ObjectMapper();
ObjectNode json = response.readEntity(ObjectNode.class);
SessionInfo ses = mapper.treeToValue(json, SessionInfo.class);
ServerInfo s1 = mapper.treeToValue(json.get("private_feed"), ServerInfo.class);
ServerInfo s2 = mapper.treeToValue(json.get("public_feed"), ServerInfo.class);
ses.serverInfo.add(s1);
ses.serverInfo.add(s2);
Преобразование ответ в формате JSON и получить значения – Garry
Конечно, я мог бы разобрать его вручную. Но когда есть такая хорошая возможность просто читать в классе, я бы хотел использовать его, если это возможно. – user2130951