我对解析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“数据”而不是“翻译”,但我不知道如何将代码修改为应有的形式?
答案 0 :(得分:0)
尝试一下:
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);
}
}
答案 1 :(得分:0)
自从我使用内置的int Android JSON对象以来已经有一段时间了,但是我的最初反应是,您需要在解析JSON数组“ translations”之前先解析JSON对象“ data”。修改您以前的代码:
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();
}
}