我需要从下面的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>\n\n<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>\n\n<p dir=\"ltr\">Parts of the ear:<\/p>\n\n<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>\n\n<div dir=\"ltr\">\n <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.<\/p>\n<\/div>"}]
答案 0 :(得分:2)
类似以下的方法应该起作用。
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非常棘手-您可能必须使用某种解析器,或者确保响应格式不会改变。