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