一、SpringMvc 服务端发布json数据
1、导入必须的JAR包
jackson-annotations-2.4.1.jar
jackson-core-2.4.1.jar
jackson-databind-2.4.1.jar
2、配置文件同一般的springmvcweb项目
3、控制器
采用@ResponseBody将返回转换成json
@Controller
publicclassJsonController {
@RequestMapping("/test1")
@ResponseBody
publicboolean test1(){
returntrue;
}
@RequestMapping("/test2")
@ResponseBody
public User test2(){
Useruser1=newUser();
user1.setUsername("kagami");
user1.setPassword("1234567");
return user1;
}
@RequestMapping("/test3")
@ResponseBody
public List<String> test3(){
ArrayList<String>al1=newArrayList<>();
al1.add("aaa");
al1.add("bbb");
al1.add("ccc");
al1.add("ddd");
return al1;
}
@RequestMapping("/test4")
@ResponseBody
public List<User>test4(){
ArrayList<User>al_user=newArrayList<>();
for(int i=0;i<10;i++){
Useruser1=newUser();
user1.setUsername("kagami"+i);
user1.setPassword("1234567"+i);
al_user.add(user1);
}
return al_user;
}
}
二、android客户端解析json数据
1.写一个工具类:
使用HttpClient的httpGet请求à得到返回的HttpEntityà用EntityUtils.toString()方法把HttpEntity转换成字符串à把字符串封装为jsonArray对象à再用jsonArray.getJSONObject(i)方法得到每一个json对象à最后用jsonObject.getString("键值对名")得到每一个键值。
public class HttpUtil {
public static List<User> getJson(String ServerUrl) throws ClientProtocolException, IOException, JSONException{
ArrayList<User> aluser=new ArrayList<User>();
HttpClient httpClient=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(ServerUrl);
HttpResponse response=httpClient.execute(httpGet);
StatusLine sl=response.getStatusLine();
if(sl.getStatusCode()==HttpStatus.SC_OK){
HttpEntity httpEntity=response.getEntity();
String jsonString=EntityUtils.toString(httpEntity);
JSONArray jsonArray=new JSONArray(jsonString);
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonObj=jsonArray.getJSONObject(i);
User user=new User();
user.setUsername(jsonObj.getString("username"));
user.setPassword(jsonObj.getString("password"));
aluser.add(user);
}
return aluser;
}else{
return null;
}
}
}
2.在UI线程里调用该方法,注意耗时操作必须放在工作线程里,如用AsyncTask封装。
此外,记得在AndroidManifest 里加网络访问权限。