Json入门
參考《瘋狂android講義》》730頁
JSON的基礎請參考W3SCHOOL的教程:
http://www.w3school.com.cn/json/index.asp
例子:
http://wenku.baidu.com/link?url=A5SiKBUNVx-aB_hFiDuHsEN1uw_Vu4a9ODRq7G-SpiY-qW11Ve8Ba8ym9TfheAUuHJhYgdD3g05lvGNWrPBzf7JZFhUlAcZYb0MMIdrcmp3
1、創建服務器端:
(1)創建對象類
package com.ljh.jsondemo.model;public class User {public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}private int id;private String name;private String email;private String gender; }
(2)創建json的提供類
package com.ljh.jsondemo.servlet;import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.json.JSONArray; import org.json.JSONObject;import com.ljh.jsondemo.model.User;public class JsonDemoServlet extends HttpServlet {private static final long serialVersionUID = -7368225680407826408L;private List<User> list;/** * 處理post方式提交的數據 */public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}/** * 處理get方式提交的數據 */public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/plain");response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();// 準備用戶數據prepareData();// JSON數組JSONArray array = new JSONArray();for (User bean : list) {// 單個用戶JSON對象JSONObject obj = new JSONObject();try {obj.put("id", bean.getId());obj.put("name", bean.getName());obj.put("email", bean.getEmail());obj.put("gender", bean.getGender());}catch (Exception e) {}array.put(obj);}// 輸出out.write(array.toString());out.flush();out.close();}private void prepareData() {list = new ArrayList<User>();User bean1 = new User();bean1.setId(1001);bean1.setName("Tony");bean1.setEmail("");bean1.setGender("male");list.add(bean1);User bean2 = new User();bean2.setId(1002);bean2.setName("Jack");bean2.setEmail("");bean2.setGender("male");list.add(bean2);User bean3 = new User();bean3.setId(1003);bean3.setName("Marry");bean3.setEmail("");bean3.setGender("female");list.add(bean3);User bean4 = new User();bean4.setId(1004);bean4.setName("Linda");bean4.setEmail("");bean4.setGender("female");list.add(bean4);}}2、創建android客戶端
注意要添加訪問internet的權限。
package com.ljh.jsondemoclient;import java.io.BufferedReader; import java.io.InputStreamReader;import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.json.JSONArray; import org.json.JSONObject;import android.os.Bundle; import android.app.Activity; import android.widget.TextView;public class MainActivity extends Activity {private String getContent(String url) throws Exception {StringBuilder sb = new StringBuilder();HttpClient client = new DefaultHttpClient();HttpParams httpParams = client.getParams();// 設置網絡超時參數HttpConnectionParams.setConnectionTimeout(httpParams, 3000);HttpConnectionParams.setSoTimeout(httpParams, 5000);HttpResponse response = client.execute(new HttpGet(url));HttpEntity entity = response.getEntity();if (entity != null) {System.out.println("test!!!!");BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"), 8192);String line = null;while ((line = reader.readLine()) != null) {sb.append(line + "\n");}reader.close();}return sb.toString();}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);try {StringBuffer sb = new StringBuffer();// 在測試過程中,經常是用本機做測試服務器,訪問本機的IP地址要設置為10.0.2.2String url = "192.168.136.133:8080/JsonDemoServer/JsonDemoServlet";String body = getContent(url);JSONArray array = new JSONArray(body);for (int i = 0; i < array.length(); i++) {JSONObject obj = array.getJSONObject(i);sb.append("id:").append(obj.getInt("id")).append("\t");sb.append("name:").append(obj.getString("name")).append("\r\n");sb.append("gender:").append(obj.getString("gender")).append("\t");sb.append("email:").append(obj.getString("email")).append("\r\n");sb.append("----------------------\r\n");}TextView textView = (TextView) findViewById(R.id.tv_json_content);textView.setText(sb.toString());} catch (Exception e) {}} }創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
- 上一篇: 提高编程能力的7条建议
- 下一篇: 【典型错误】The type java.