启动apache服务,在C:\Program Files\Apache Software Foundation\Apache2.4\htdocs新建get_json.json
get_json.json
[{"id":"1","name":"tom","version":"1"},
{"id":"2","name":"jerry","version":"2"}]
使用JSONObject
MainActivity.java
package com.example.testsometing;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class MainActivity extends Activity {
Handler handler ;
TextView tv_response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_response = (TextView) this.findViewById(R.id.response);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
tv_response.setText(parseJSONWithJSONObject(msg.obj.toString()));
break;
default:
break;
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://10.0.2.2/get_json.json");//指定访问的服务器地址是电脑本机
HttpResponse httpResponse = httpClient.execute(httpGet);
String response;
if(httpResponse.getStatusLine().getStatusCode() == 200){
//请求和相应都成功
HttpEntity entity = httpResponse.getEntity();
response = EntityUtils.toString(entity,"utf-8");
}
else{
response = "error";
}
Message msg = new Message();
msg.what = 1;
msg.obj = response;
handler.sendMessage(msg);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
).start();
}
private String parseJSONWithJSONObject(String str){
String string = "";
try {
JSONArray jsonArray = new JSONArray(str);
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String version = jsonObject.getString("version");
string += id+":"+name+":"+version+"\n";
}
} catch (JSONException e) {
e.printStackTrace();
}
return string;
}
}
使用GSON
使用gson的好处是可以将一段json格式的字符串自动映射成一个对象,从而不需要我们手动的编写代码。(省去set方法)
1.先导入 gson-2.2.4.jar
2.新建一个实体类App
package com.example.entity;
public class App {
private String id;
private String name;
private String version;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
MainActivity.java
package com.example.testsometing;
import java.io.IOException;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import com.example.entity.App;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class MainActivity extends Activity {
Handler handler ;
TextView tv_response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_response = (TextView) this.findViewById(R.id.response);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
tv_response.setText(parseJSONWithGson(msg.obj.toString()));
break;
default:
break;
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://10.0.2.2/get_json.json");//指定访问的服务器地址是电脑本机
HttpResponse httpResponse = httpClient.execute(httpGet);
String response;
if(httpResponse.getStatusLine().getStatusCode() == 200){
//请求和相应都成功
HttpEntity entity = httpResponse.getEntity();
response = EntityUtils.toString(entity,"utf-8");
}
else{
response = "error";
}
Message msg = new Message();
msg.what = 1;
msg.obj = response;
handler.sendMessage(msg);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
).start();
}
private String parseJSONWithGson(String str){
String string = "";
Gson gson = new Gson();
List<App> appList = gson.fromJson(str,new TypeToken<List<App>>(){}.getType());
for(App app:appList){
string += app.getId()+":"+app.getName()+":"+app.getVersion()+"\n";
}
return string;
}
}
效果: