一、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 里加網絡訪問權限。