1. javaEE中导包进行环境搭建
2. web环境中利用Servlet进行json数据解析
1) 获取数据库中的数据进行封装
2) 将List集合转换成一个json数据格式
3) 利用浏览器工具获取Content-Type
4)响应类型Json的数据
相关的代码:
//来自于数据库
UserDaodaoImpl = newUserDaoImpl();
List<User>entities = daoImpl.findAll();
//把List集合转换成一个json的数据格式
JSONArrayjsonArray = JSONArray.fromObject(entities);
//响应类型json的数据
response.setContentType("application/json");
response.getWriter().write(jsonArray.toString());
response.getWriter().close();
3. android中进行json数据的获取
1) Android界面的实现,即activity_json.xml
利用<ListView></ListView>进行搭建
2) 导包,导入所要使用的Android-async-http的最新版本的jar包
android-async-http-1.4.4.jar
当然还可以使用文件包,但是Android-async-http的最新版本的jar包更为方便
3) 利用android-async-http开源项目中的JsonHttpResponseHandler进行json数据的获取
4) 注意添加:<uses-permissionandroid:name="android.permission.INTERNET"/>
5) 调试bug:
原因是:因为线程,主线程和子线程两个线程进行,主线程不能在子线程之前完成,因此出现线程bug。
修改后的相关代码:
packagewww.csdn.net.lesson05_04_json;
importjava.util.ArrayList;
importjava.util.List;
importorg.apache.http.Header;
importorg.json.JSONArray;
importorg.json.JSONException;
importorg.json.JSONObject;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.widget.ArrayAdapter;
importandroid.widget.ListView;
importandroid.widget.Toast;
importcom.loopj.android.http.AsyncHttpClient;
importcom.loopj.android.http.JsonHttpResponseHandler;
publicclass JsonActivity extends Activity {
private ListView lv_users;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_json);
// http://localhost:8080/video/JsonServlet
lv_users=(ListView)findViewById(R.id.lv_users);
//M层 //initData本身在一个子线程中处理
initData();
}
private void initData() {
// 访问服务器端获取json数据
//访问服务器端的json数据
AsyncHttpClient client=newAsyncHttpClient();
Stringurl="http://172.16.237.105:8080/video/JsonServlet";
Toast.makeText(this, "发送请求道服务器",Toast.LENGTH_LONG).show();
client.get(url,newJsonHttpResponseHandler(){
@Override
public void onSuccess(intstatusCode, Header[] headers,
JSONArrayresponse) {
// TODOAuto-generated method stub
super.onSuccess(statusCode,headers, response);
if(statusCode==200){
//存储数据变量
List<String>objects=new ArrayList<>();
for(inti=0;i<response.length();i++){
try{
JSONObjectobj=response.getJSONObject(i);
//System.out.println("序号:"+obj.getInt("id")+"-姓名:"+obj.getString("name")+"-密码:"+obj.getString("pass")+"-"+obj.get("regDate"));
objects.add(obj.getString("name"));
}catch (JSONException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
//C控制层主要就是对数据处理
ArrayAdapter<String>adapter=new ArrayAdapter<>(JsonActivity.this,android.R.layout.simple_expandable_list_item_1,objects);
//设置显示的内容
lv_users.setAdapter(adapter);//C空置
}
}
});
}
}