2014-12-17 2 views
-4

Привет, парень, я пытаюсь разобрать этот огромный текст, чтобы получить нужный материал, как идентификатор descreption, значок и т. Д. Но я не могу представить, что остаюсь, пытаюсь получить значок сейчас, но продолжает говорить мне:Попытка разобрать строку в JAVA

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) 

Am пытается получить (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); 
    } 
} 
+5

Пожалуйста, не разобрать JSON себя. Используйте анализатор JSON. http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java –

+0

Ты за свой ответ просто получил его на работу :) – Punxor

ответ

0
skill.substring(startICO, startICO - endIcon); 

В этом значении startICO будет больше, чем startICO - endIcon

Отсюда StringIndexOutofBoundsException

+0

Значит, ты говоришь, что это должно быть endIcon - startIcon? Пожалуйста, добавьте опровержение, в котором говорится, что OP использует парсер JSON –

Смежные вопросы