Извлечь JSON строку из неструктурированной строки - PullRequest
0 голосов
/ 10 июля 2020

У меня есть неструктурированная строка, и я хотел бы извлечь оттуда следующую JSON строку с тегом «restaurant» с помощью регулярного выражения. Данные приведены для примера, но формат и тег «ресторан» верны.

{
    "restaurant": {
        "id": "abcd-efgh-ijkl",
        "created_at": "2020-12-31",
        "cashier_payments": []
    }
 }

Я придумываю регулярное выражение String findMe = "\"restaurant\": {(\\n.*?)+}";, однако оно принимает все данные до последнего } .

Как исправить регулярное выражение?

Как и просили, я получаю неструктурированную строку с помощью Jsoup:

        String htmlString = contentBuilder.toString();
        Document doc = Jsoup.parse(htmlString);
        Elements elements = doc.getElementsByTag("script");
    
        for (Element element :elements ){
            
            for (DataNode node : element.dataNodes()) {
                String s = node.getWholeData();
                if(s.contains("\"restaurant\":")){
                    System.out.println(s);
                }
            }
            System.out.println("-------------------");
        }

Итак, я хотел бы выполнить синтаксический анализ из строки с.

1 Ответ

1 голос
/ 10 июля 2020

Если записи, которые вы собираетесь извлечь, не содержат объектов (в противном случае вам понадобится правильный JSON парсер), вы можете использовать следующее регулярное выражение: "restaurant":\s*\{[^}]*\} Изменить: похоже, что объект значения действительно содержит другие объекты, поэтому я предлагаю использовать библиотеку JSON, такую ​​как Jackson.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...