Я не очень знаком с анализом объектов JSON, и мне очень нужна помощь ваших ребят в этом. Я знаю, что синтаксический анализ, который я выполняю, неправильный, и я не понял, прочитав источники в Интернете о синтаксическом анализе в Android Studio.
Приведенный ниже код является частью моего проекта.
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("translations");
for (int i = 0; i < jsonArray.length(); i++ ) {
JSONObject translations = jsonArray.getJSONObject(i);
String translatedText = translations.getString("translatedText");
textView.append(translatedText);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
Объект JSON, который я пытаюсь проанализировать, находится ниже: -
{
"data": {
"translations": [
{
"translatedText": "queso"
}
]
}
}
Мне сказали, что мой код не работает, поскольку первый уровень JSON - это «данные» JSONObject, а не «переводы», но я не знаю, как изменить код так, как он должен быть?
Попробуй это:
JSONObject jsonData = response.getJSONObject("data");
if (jsonData != null) {
JSONArray jsonArray = jsonData.getJSONArray("translations");
for (int i = 0; i < jsonArray.length(); i++ ) {
JSONObject translations = jsonArray.getJSONObject(i);
String translatedText = translations.getString("translatedText");
textView.append(translatedText);
}
}
Прошло некоторое время с тех пор, как я использовал встроенные объекты JSON в Android, но моя первая реакция такова, что вам нужно проанализировать "данные" объекта JSON перед синтаксическим анализом "переводов" массива JSON. Изменение вашего предыдущего кода:
public void onResponse(JSONObject response) {
try {
JSONObject data = response.getJSONObject("data"); // get data first
JSONArray jsonArray = data.getJSONArray("translations"); // get the array from data
for (int i = 0; i < jsonArray.length(); i++ ) {
JSONObject translations = jsonArray.getJSONObject(i);
String translatedText = translations.getString("translatedText");
textView.append(translatedText);
}
} catch (JSONException e) {
e.printStackTrace();
}
}