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