从链接获取JSON,然后为Android解析它

从链接获取JSON,然后为Android解析它,android,json,parsing,Android,Json,Parsing,我在这个链接上有JSON数据。 我需要得到我的应用程序上的所有数据,然后解析它,然后进一步使用它。我该怎么做呢?另外,如果我能得到一些详细的说明,我将不胜感激,因为我是个新手 这是一个完整的例子,你可以从中学习 基本上异步任务是后台运行的任务,做所有的事情,包括数据检索、网络调用等 异步任务的要点是不能在doInBackground中更改UI组件,doInBackground只能用于检索数据,UI组件中的所有更改都将在OnPostexecute方法中完成 private class GetD

我在这个链接上有JSON数据。
我需要得到我的应用程序上的所有数据,然后解析它,然后进一步使用它。我该怎么做呢?另外,如果我能得到一些详细的说明,我将不胜感激,因为我是个新手

这是一个完整的例子,你可以从中学习

基本上异步任务是后台运行的任务,做所有的事情,包括数据检索、网络调用等

异步任务的要点是不能在
doInBackground
中更改UI组件,
doInBackground
只能用于检索数据,UI组件中的所有更改都将在
OnPostexecute
方法中完成

  private class GetData extends AsyncTask<Void, Void, Void> {
    @Override
    protected Void doInBackground(Void... arg0) {
        String jsonData = getPrivateData();
        JsonObject dataObject = JSONObject jsonObj = new JSONObject(jsonData);
        String createdAt = dataObject.getString("created_at");
        String field1= dataObject.getString("field1");
        String field1= dataObject.getString("field2");
        Int entryId = dataObject.getInt("entry_id");
    }

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

public Sting getPrivateData() {
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet("https://api.thingspeak.com/channels/67451/feed/last.json?api_key=VBR3ZDSNGSYJFDDB");

    try {
       HttpResponse response = client.execute(httpGet);
       StatusLine statusLine = response.getStatusLine();
       int statusCode = statusLine.getStatusCode();

       if (statusCode == 200) {
           HttpEntity entity = respons`e.getEntity();
           InputStream content = entity.getContent();
           BufferedReader reader = new BufferedReader(new InputStreamReader(content));

           String line;

           while ((line = reader.readLine()) != null) {
                builder.append(line);
           }
       } else {
           Log.e(ParseJSON.class.toString(), "Failed to download file");
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return builder.toString();
}
私有类GetData扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…arg0){
字符串jsonData=getPrivateData();
JsonObject数据对象=JsonObject JsonObject=新JsonObject(jsonData);
String createdAt=dataObject.getString(“created_at”);
stringfield1=dataObject.getString(“field1”);
stringfield1=dataObject.getString(“field2”);
Int entryId=dataObject.getInt(“entry_id”);
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
}
}
public Sting getPrivateData(){
StringBuilder=新的StringBuilder();
HttpClient=new DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(“https://api.thingspeak.com/channels/67451/feed/last.json?api_key=VBR3ZDSNGSYJFDDB");
试一试{
HttpResponse response=client.execute(httpGet);
StatusLine StatusLine=response.getStatusLine();
int statusCode=statusLine.getStatusCode();
如果(状态代码==200){
HttpEntity=response`e.getEntity();
InputStream内容=entity.getContent();
BufferedReader=新的BufferedReader(新的InputStreamReader(内容));
弦线;
而((line=reader.readLine())!=null){
builder.append(行);
}
}否则{
Log.e(ParseJSON.class.toString(),“未能下载文件”);
}
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回builder.toString();
}

您可以进一步阅读此链接

本教程将有助于您理解json解析的基本原理。我的json数据类型为{“created_at”:“2015-12-02T10:09:48Z”,“entry_id”:373,“field1”:“9”,“field2”:“36”}所以我需要帮助来读取这种类型的json数据,您所要做的就是从从服务器接收的字符串中获取JSONObject,并调用方法getString(key)来获取值。在@Aashvi链接您的教程中,有相关信息。你应该读一下…