Итак, проблема в том, что ваш элемент <pre>
содержит строку JSON, которую нельзя проанализировать с помощью Jsoup.В любом случае первым шагом является извлечение строки JSON:
<code>String html = "<pre style=\"word-wrap: break-word; white-space: pre-wrap;\">{\"status\":\"success\",\"connected_id\":\"dfdffdffdfdfdf\"}
"; Document document = Jsoup.parse (html); Element element = document.selectFirst (" pre "); String json = element.text ();
Самый простой, но, вероятно, не самый лучший способ извлечь connected_id
из строки JSON - это использовать регулярное выражение:
Pattern pattern = Pattern.compile("\"connected_id\":\"(?<id>.*)\"");
Matcher matcher = pattern.matcher(json);
if (matcher.find()) {
String connectedId = matcher.group("id");
// ...
}
Лучшим способом было бы разобратьстрока JSON. Этого можно добиться, используя библиотеку синтаксического анализа JSON, например Джексон , Гсон или другие .
Вот пример использования Джексона:
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(json);
String connectedId = jsonNode.get("connected_id").asText();
Если вы хотите извлечь еще несколько значений (не только connected_id
), я бы предложил преобразовать строку JSON в объект Java следующим образом:
public class MyObject {
private String status;
@JsonProperty("connected_id")
private String connectedId;
// more attributes if you need them
// getter and setter
}
Youтеперь можно использовать этот класс для чтения значения json:
ObjectMapper mapper = new ObjectMapper();
MyObject result = mapper.readValue(json, MyObject.class);
String connectedId = result.getConnectedId();
Все решения вернут dfdffdffdfdfdf
как результат.