如何从json获取某些值(转换为文本)

时间:2018-03-30 13:25:24

标签: java json

我以字符串格式获取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)值,如何在没有子字符串的情况下完成它?

2 个答案:

答案 0 :(得分:1)

你应该重新考虑使用json解析器作为你的用例。

但是如果你真的想手动完成,你应该使用正则表达式而不是子串:

 @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;
    }

答案 1 :(得分:0)

为什么要避免JSONObject? 您是否知道快速路线有时会变得最长且最危险?

我引用@ chess4ever,如果你对JSONObject感到不舒服,请看看Gson图书馆。