从 REST JSON 响应中获取 HTML ID 标记



我需要从下面的 REST 响应中获取 ID 标签值,但我不确定如何做到这一点。

任何帮助将不胜感激。

JSONParser jsonParser = new JSONParser();
Object obj = jsonParser.parse(new FileReader("C:\desktop\file.txt"));
JSONObject jsonObject = (JSONObject) obj;
JSONArray components = (JSONArray) jsonObject.get("components");

响应

[{"rtr__numberedlist01__list":"<h2 id="numbered_list" dir="ltr">Cheap Bananas</h2>nn<img id="picture1" src="/wps/wcm/connect/394b1433-90ef-4780-ab4d-9aff63d7bdba/.jpg" alt="Lorem ipsum dolor sit amet, consectetur adipiscing elit" width="943" height="1995"  title="" style="width: 236px; height: 500px; float: right;">n<p dir="ltr">Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>nn<p dir="ltr">Parts of the ear:</p>nn<ul id="list1" dir="ltr">n  <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>n  <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>n</ul>nn<div dir="ltr">n  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>n</div>"}]

像下面这样的东西应该可以工作。

private static List<String> extractIds(JSONArray jsonArray) {
List<String> ids = new ArrayList<>();
Pattern pattern = Pattern.compile("id="([^"]*)"");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject o = jsonArray.getJSONObject(i);
Iterator<String> keys = o.keys();
while (keys.hasNext()) {
String html = o.getString((String) keys.next());
Matcher m = pattern.matcher(html);
while (m.find()) {
ids.add(m.group(1));
}
}
}
return ids;
}

请注意,使用正则表达式解析 HTML 很棘手 - 您可能必须使用某种解析器或确保响应格式不会改变。

最新更新