我正在尝试使用Google Cloud Translation API解析json对象,但翻译后的文本未显示在TextView中。我什至不确定我的解析是否正确完成,但是没有显示任何错误指示我的解析出错。我以为我没有互联网连接,因为我无法通过android模拟器使用chrome浏览网络,但是我已经在Android Manifest文件中添加了INTERNET权限。
下面是我的“翻译”按钮,用于在TextView中显示已解析的JSON对象。
//Button to translate
translatebutton = (Button) view.findViewById(R.id.translatebutton);
mQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
translatebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView = (TextView) getView().findViewById(R.id.translatedtext);
texttotranslate = (EditText) getView().findViewById(R.id.translatetextinput);
jsonParse();
}
});
下面是jsonParse()函数的代码。
private void jsonParse () {
String url = "https://translation.googleapis.com/language/translate/v2?key=APIKEY&q=cheese&target=es&source=en";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
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();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mQueue.add(request);
}
下面是我要解析的JsonObject。我解析错了吗?
{
"data": {
"translations": [
{
"translatedText": "queso"
}
]
}
}
下面是单击“翻译”按钮后的日志。如果有帮助,我已经在我的Android清单文件中添加了INTERNET权限。
09-26 21:39:56.086 19811-19811/project.myapplication W/System.err: org.json.JSONException: No value for translations
09-26 21:39:56.088 19811-19811/project.myapplication W/System.err: at org.json.JSONObject.get(JSONObject.java:392)
at org.json.JSONObject.getJSONArray(JSONObject.java:587)
at project.myapplication.Translator$3.onResponse(Translator.java:139)
at project.myapplication.Translator$3.onResponse(Translator.java:135)
at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
09-26 21:39:56.089 19811-19811/project.myapplication W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)