繁体   English   中英

从非结构化字符串中提取 JSON 字符串

[英]Extract JSON string from unstructured string

我有一个非结构化字符串,我想使用正则表达式从那里提取带有“restaurant”标签的以下 JSON 字符串。 数据是示例,但格式和“餐厅”标签是正确的。

{
    "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("-------------------");
        }

所以我想从 String 解析。

如果您要提取的条目不包含对象(否则,您将需要适当的 JSON 解析器),您可以使用以下正则表达式: "restaurant":\s*\{[^}]*\}
编辑:似乎 object 的值确实包含其他对象,所以我建议使用 JSON 库,例如 Jackson。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM