我以字符串格式获取json,我想从中获取某些值,我不想使用JSONObject和相关的org.json实现,这是我正在尝试的方法:

String  text=execution.getVariable("documents").toString();
     String  finalResult=text.substring( text.indexOf(":")+1,text.length());
     String Final2=finalResult.replaceAll("=", ":");
     String Fin3=Final2.replace("[","");
     String Fin4=Fin3.replace("]", "");
     System.out.println(Fin4);
     System.out.println(Fin4.substring(Fin4.indexOf("id"),Fin4.indexOf(",")));


这是我的json(格式为字符串)输入示例:

[{id:1,"name":"olovia","age":34}];


而且我想从此字符串中获取所有这些(id,name,age)值,我应该如何在没有子字符串的情况下进行操作?

最佳答案

您应该重新考虑为用例使用json解析器。

但是,如果您真的想手动执行此操作,则应使用regex而不是substrings:

 @Test
    public void should_find_key() throws Exception {
       String input = "[{id:1,\"name\":\"olovia\",\"age\":34}]";
       Assertions.assertThat(extract("name", input)).isEqualTo("olovia");
    }

    private String extract(String key, String input) {
        Pattern pattern = Pattern.compile("\"" + key + "\":\"(.*?)\"");
        Matcher matcher = pattern.matcher(input);
        if (matcher.find()) {
            return  matcher.group(1);
        }
        return null;
    }

09-10 06:57
查看更多