Найдите строку JSON из HTML - PullRequest
0 голосов
/ 10 июля 2020

У меня есть строка HTML, указанная ниже:

<!doctype html>
<html>
<head><title>Breadcrumb Admin</title>
</body>
</html>

Я хотел бы извлечь строку JSON внутри этого тега с помощью регулярного выражения:

{

   "restaurant": {

   }
}

У меня есть это Java код, который не работает:

        String restaurants = null;

        String findMe = "\\{\"restaurant\":\\[(.*)\\]\\}";
        Pattern p = Pattern.compile(findMe);
        Matcher m = p.matcher(response.getBody());
        
        if (m.find()) {
            restaurants = m.group(0);
        }

В чем проблема?

1 Ответ

1 голос
/ 10 июля 2020
String htmlString = "<script>\n" +
                "    _preloaded = {models: [], collections: [], notification: {}};\n" +
                "    _preloaded.models.push(\n" +
                "\n" +
                "     {\n" +
                "        \"restaurant\": {\n" +
                "            \"id\": \"abcd-efgh-ijkl\",\n" +
                "            \"created_at\": \"2020-12-31\",\n" +
                "            \"cashier_payments\": []\n" +
                "        }\n" +
                "     }\n" +
                ");\n" +
                "</script>";
Pattern p = Pattern.compile("\\([^)]*\\)");//. represents single character
Matcher m = p.matcher(htmlString);

if(m.find()){
      String matchJson = m.group(0);
      String onlyJson = matchJson.substring(1, matchJson.length()-1).trim();
      System.out.println(onlyJson);
}

Вывод:

{
        "restaurant": {
            "id": "abcd-efgh-ijkl",
            "created_at": "2020-12-31",
            "cashier_payments": []
        }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...