Итак, строка, с которой я работаю, - это вопрос API -> https://opentdb.com/api.php?amount=10
Проблема в том, что вопрос содержит символ "," (тогда он будет разделен мои строковые переменные неверны)
Мой тестовый код:
public static void main(String[] args) throws Exception {
String json = readUrl("https://opentdb.com/api.php?amount=10");
Gson gson = new Gson();
Quiz quiz = gson.fromJson(json, Quiz.class);
String string = quiz.results.iterator().next().toString();
String[] parts = string.split(",");
// Category
String part1 = parts[0];
part1 = part1.replace("{category=", "");
// Type
String part2 = parts[1];
part2 = part2.replace("type=", "");
//Difficulty
String part3 = parts[2];
part3 = part3.replace("difficulty=", "");
//Question
String part4 = parts[3];
part4 = part4.replace("question=", "");
//Correct answers
String part5 = parts[4];
part5 = part5.replace("correct_answer=", "");
//Incorrect answers
String part6 = parts[5];
part6 = part6.replace("incorrect_answers=[", "");
//Output
System.out.println("Category: " + part1);
System.out.println("Type: " + part2);
System.out.println("Difficulty: " + part3);
System.out.println("Question: " + part4);
System.out.println("Correct answers: " + part5);
System.out.println("Incorrect answers " +part6);
Есть хорошие идеи для решения этой проблемы? Есть ли хороший способ разделить слова в строке из API-URL от одного слова к другому? Пример от слова "question =" к слову "correct_answers =" Так что я могу сохранить строку, которая находится в середине двух слов.
// метод readUrl:
public static String readUrl(String urlString) throws Exception {
BufferedReader reader = null;
try {
URL url = new URL(urlString);
reader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuffer buffer = new StringBuffer();
int read;
char[] chars = new char[1024];
while ((read = reader.read(chars)) != -1)
buffer.append(chars, 0, read);
return buffer.toString();
} finally {
if (reader != null)
reader.close();
}
}
// Класс объекта викторины:
static class Quiz {
private float response_code;
ArrayList<Object> results = new ArrayList<Object>();
// Getter Methods
public float getResponse_code() {
return response_code;
}
// Setter Methods
public void setResponse_code(float response_code) {
this.response_code = response_code;
}
}