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

时间:2018-09-03 08:59:33

标签: java json rest

我需要从下面的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>"}]

1 个答案:

答案 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非常棘手-您可能必须使用某种解析器,或者确保响应格式不会改变。