Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用牛津字典api制作字典应用程序?_Java_Android_Json_Api - Fatal编程技术网

Java 如何使用牛津字典api制作字典应用程序?

Java 如何使用牛津字典api制作字典应用程序?,java,android,json,api,Java,Android,Json,Api,这是我从文档中得到的代码,我得到了,我收到了JSON格式的结果。但我只需要这个词的意思。那么,有谁能告诉我如何只提取搜索词的含义,而不是获取整个JSON文件。我是android开发新手,请帮助我 package com.example.hsekar.dictionarytestbeta; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; i

这是我从文档中得到的代码,我得到了,我收到了JSON格式的结果。但我只需要这个词的意思。那么,有谁能告诉我如何只提取搜索词的含义,而不是获取整个JSON文件。我是android开发新手,请帮助我

package com.example.hsekar.dictionarytestbeta;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    new CallbackTask().execute(dictionaryEntries());
}

private String dictionaryEntries() {
    final String language = "en";
    final String word = "Ace";
    final String word_id = word.toLowerCase(); //word id is case sensitive and lowercase is required
    return "https://od-api.oxforddictionaries.com:443/api/v1/entries/" + language + "/" + word_id;
}


//in android calling network requests on the main thread forbidden by default
//create class to do async job
private class CallbackTask extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... params) {

        //TODO: replace with your own app id and app key
        final String app_id = "10742428";
        final String app_key = "ada344f3a7a7c7de0315fb78c5c9d6f9";
        try {
            URL url = new URL(params[0]);
            HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
            urlConnection.setRequestProperty("Accept","application/json");
            urlConnection.setRequestProperty("app_id",app_id);
            urlConnection.setRequestProperty("app_key",app_key);

            // read the output from the server
            BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            StringBuilder stringBuilder = new StringBuilder();

            String line = null;
            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line + "\n");
            }

            return stringBuilder.toString();

        }
        catch (Exception e) {
            e.printStackTrace();
            return e.toString();
        }
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        Log.d("This will be my result",result);
    }
  }
 }

所以我的问题是如何从这个输出中只提取“有意义”的部分

您提到的Json结果不完整。结果中的对象没有关闭。顺便说一句,这就是从Json字符串获取结果的方式

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    try {
       JSONObject js = new JSONObject(result);
        JSONArray results = js.getJSONArray("results");
        for(int i = 0;i<results.length();i++){
            JSONObject lentries = results.getJSONObject(i);
            JSONArray la = lentries.getJSONArray("lexicalEntries");
            for(int j=0;j<la.length();j++){
                JSONObject entries = la.getJSONObject(j);
                JSONArray e = entries.getJSONArray("entries");
                for(int i1=0;i1<e.length();i1++){
                    JSONObject senses = la.getJSONObject(i1);
                    JSONArray s = entries.getJSONArray("senses");
                    JSONObject d = s.getJSONObject(0);
                    JSONArray de = d.getJSONArray("definitions");
                    def = de.getString(0);
                }
            }
        }
        Log.e("def",def);

    } catch (JSONException e) {
        e.printStackTrace();
    }
@覆盖
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
试一试{
JSONObject js=新的JSONObject(结果);
JSONArray results=js.getJSONArray(“结果”);
对于(int i=0;i
@覆盖
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
//Log.d(“这将是我的结果”,result);
字符串def=“”;
试一试{
JSONObject js=新的JSONObject(结果);
JSONArray results=js.getJSONArray(“结果”);
对于(int i=0;i
开始使用改型,UrlConnections已经过时了。你有没有先搜索过如何在Java/Android中解析JSON?有很多问题和教程向你展示如何解析JSON。一些有用的搜索关键词是
Java JSON解析
Android JSON解析
我知道这很旧,但是…如果那些觉得有必要投反对票的人会说为什么。至少发帖的人花时间写了些东西,是吗?投反对票而什么也不说有什么意义?这一点都没有建设性。
@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    try {
       JSONObject js = new JSONObject(result);
        JSONArray results = js.getJSONArray("results");
        for(int i = 0;i<results.length();i++){
            JSONObject lentries = results.getJSONObject(i);
            JSONArray la = lentries.getJSONArray("lexicalEntries");
            for(int j=0;j<la.length();j++){
                JSONObject entries = la.getJSONObject(j);
                JSONArray e = entries.getJSONArray("entries");
                for(int i1=0;i1<e.length();i1++){
                    JSONObject senses = la.getJSONObject(i1);
                    JSONArray s = entries.getJSONArray("senses");
                    JSONObject d = s.getJSONObject(0);
                    JSONArray de = d.getJSONArray("definitions");
                    def = de.getString(0);
                }
            }
        }
        Log.e("def",def);

    } catch (JSONException e) {
        e.printStackTrace();
    }
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        //Log.d("This will be my result",result);


        String def = "";
        try {
            JSONObject js = new JSONObject(result);
            JSONArray results = js.getJSONArray("results");
            for (int i = 0; i < results.length(); i++) {
                JSONObject lentries = results.getJSONObject(i);
                JSONArray la = lentries.getJSONArray("lexicalEntries");
                for (int j = 0; j < la.length(); j++) {
                    JSONObject entries = la.getJSONObject(j);
                    JSONArray e = entries.getJSONArray("entries");
                    for (int k= 0; k < e.length(); k++) {
                        JSONObject senses = e.getJSONObject(k);
                        JSONArray s = senses.getJSONArray("senses");
                        JSONObject d = s.getJSONObject(0);
                        JSONArray de = d.getJSONArray("definitions");
                        def = de.getString(0);
                    }
                }
            }
            Log.e("def", def);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        //Log.d("This will be my result",result);
    }