试图在JAVA中解析字符串
嘿,伙计,我正试图解析这个巨大的文本,以获取我想要的东西,如描述id、图标等,但我似乎无法获取其余的内容。我正在尝试获取图标,但一直告诉我:试图在JAVA中解析字符串,java,Java,嘿,伙计,我正试图解析这个巨大的文本,以获取我想要的东西,如描述id、图标等,但我似乎无法获取其余的内容。我正在尝试获取图标,但一直告诉我: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -18 at java.lang.String.substring(String.java:1954) at com.company.Main.main(Main.
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -18
at java.lang.String.substring(String.java:1954)
at com.company.Main.main(Main.java:19)
我只想用这些东西得到iwd1D,任何帮助都是非常好的,谢谢
public static void main(String[] args) {
String skill = "[{\"id\":\"16\",\"icon\":\"iwd1D\"ref\":\"aa\",\"mp\":\"0\",\"nam\":\"Auto attack\",\"anim\":\"Attack1,Attack2\",\"desc\":\"A basic attack, taught to all adventurers.\",\"isOK\":true,\"range\":\"301\",\"fx\":\"m\",\"damage\":1,\"auto\":true,\"tgt\":\"h\",\"typ\":\"aa\",\"dsrc\":\"AP2\",\"cd\":\"2000\"}";
//Getting id which is 16 works fine
int startID;
startID = skill.indexOf("\"id\"") + 6;
int endID = skill.indexOf(":\"", startID);
String id = skill.substring(startID, endID - startID);
System.out.println(id);
//Getting icon which is iwd1D can't seem to get it work
int startICO;
startICO = skill.indexOf(",\"icon\"") + 7;
int endIcon = skill.indexOf(":\"", startICO);
String icon = skill.substring(startICO, startICO - endIcon);
System.out.println(icon);
}
}
在这种情况下,startICO的值将大于startICO-endIcon
因此,StringIndexOutofBoundsException请不要自己解析JSON。使用JSON解析器。你的答案刚刚起作用:那么你是说应该是endIcon-startIcon?请添加免责声明,告知OP使用JSON解析器
skill.substring(startICO, startICO - endIcon);