TextView不显示从JSON对象解析的翻译文本

时间:2018-09-26 12:50:43

标签: android json parsing logcat

我正在尝试使用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)

0 个答案:

没有答案