Android 解析json資料

來源:互聯網
上載者:User

標籤:android   jackson   伺服器   object   

  1.JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用完全獨立於語言的文字格式設定,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和產生(網路傳輸速度)。

2.json的資料格式

   1>object

{

             "name"aaaaaaaaa:"jackson",

              "age":100

 }

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6C/47/wKioL1VEfuvCrs63AACLVIGXepU096.jpg" title="QQ20150502153151.png" alt="wKioL1VEfuvCrs63AACLVIGXepU096.jpg" />

      2>數組

{

“students”:

[

{"name":"jackson","age":100},

{"name":"yu","age":22}

]

}

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6C/47/wKioL1VEf5fRyhhAAAB_US2ItPE665.jpg" title="QQ20150502153448.png" alt="wKioL1VEf5fRyhhAAAB_US2ItPE665.jpg" />

執行個體:把伺服器端的資料產生json資料格式的返回,在Android用戶端擷取json資料,解析該json格式的資料。

 1.使用Json 需要用到一下幾個包,下載這下包放在伺服器的項目工程下

json-lib-2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.jar commons-lang-2.3.jar commons-logging-1.0.4.jar commons-collections-3.1.jar ezmorph-1.0.3.jar2. 在Myeclipse 下建立一個項目,首先建立一個 Json的工具類,通過調用該工具類,可以把資料轉換成Json格式的
public class JsonTools {public JsonTools() {// TODO Auto-generated constructor stub}/** * @param key *            表示json字串的頭資訊 * @param object *            是對解析的集合的類型 * @return */public static String createJsonString(String key, Object value) {JSONObject jsonObject = new JSONObject();jsonObject.put(key, value);return jsonObject.toString();}

3.給對象賦值

package com.json.service;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.json.domain.Person;public class JsonService {public JsonService() {}    /*     * {"person":{"address":"beijing","id":1001,"name":"jack"}}      */public Person getPerson() {Person person = new Person(1001, "yu", "beijing");return person;}    /*     * {"persons":[{"address":"guangxi","id":1001,"name":"jack"},{"address":"guangdong","id":1002,"name":"rose"}]}      */public List<Person> getlistPerson() {List<Person> list = new ArrayList<Person>();Person person1 = new Person(1001, "yu", "guangxi");Person person2 = new Person(1002, "rose", "guangdong");list.add(person1);list.add(person2);return list;}   /*    * {"liststring":["beijing","shanghai","hunan"]}     */public List<String> getListString() {List<String> list = new ArrayList<String>();list.add("beijing");list.add("shanghai");list.add("hunan");return list;}    //{"listmap":[{"id":1001,"address":"beijing","name":"jack"},{"id":1002,"address":"shanghai","name":"rose"}]} public List<Map<String, Object>> getListMaps() {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Map<String, Object> map1 = new HashMap<String, Object>();map1.put("id", 1001);map1.put("name", "jack");map1.put("address", "beijing");Map<String, Object> map2 = new HashMap<String, Object>();map2.put("id", 1002);map2.put("name", "rose");map2.put("address", "shanghai");list.add(map1);list.add(map2);return list;}}

4.建立一個Servlet 調用 產生json的方法,然後把產生的json格式的資料輸出到用戶端

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();String jsonString = "";String action_flag =request.getParameter("action_flag");if (action_flag.equals("person")) {jsonString = JsonTools.createJsonString("person", service.getPerson());System.out.println("person");} else if (action_flag.equals("persons")) {jsonString = JsonTools.createJsonString("persons", service.getlistPerson());System.out.println("persons");} else if (action_flag.equals("liststring")) {jsonString = JsonTools.createJsonString("liststring", service.getListString());System.out.println("liststring");} else if (action_flag.equals("listmap")) {jsonString = JsonTools.createJsonString("listmap", service.getListMaps());System.out.println("listmap");}out.println(jsonString);out.flush();out.close();}

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6C/50/wKiom1VFzP_RsZWVAAFQfyUpEzc040.jpg" title="QQ20150503152308.png" alt="wKiom1VFzP_RsZWVAAFQfyUpEzc040.jpg" />


5.搭建Android用戶端,建立一個HttpClient工具類,擷取伺服器端json格式的資料

package com.android.myjson.http;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class HttpUtils {public HttpUtils() {// TODO Auto-generated constructor stub}public static String getJsonContent(String url_path) {try {URL url = new URL(url_path);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setConnectTimeout(3000);connection.setRequestMethod("GET");connection.setDoInput(true);int code = connection.getResponseCode();if (code == 200) {return changeInputStream(connection.getInputStream());}} catch (Exception e) {// TODO: handle exception}return "";}private static String changeInputStream(InputStream inputStream) {// TODO Auto-generated method stubString jsonString = "";ByteArrayOutputStream outputStream = new ByteArrayOutputStream();int len = 0;byte[] data = new byte[1024];try {while ((len = inputStream.read(data)) != -1) {outputStream.write(data, 0, len);}jsonString = new String(outputStream.toByteArray());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return jsonString;}}

6.建立一個Json 工具類解析json 資料

package com.android.myjson.json;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.json.JSONArray;import org.json.JSONObject;import com.android.myjson.domain.Person;public class JsonTools {public JsonTools() {// TODO Auto-generated constructor stub}public static Person getPerson(String key, String jsonString) {Person person = new Person();        //{"person":{"address":"beijing","id":1001,"name":"jack"}}try {JSONObject jsonObject = new JSONObject(jsonString);JSONObject personObject = jsonObject.getJSONObject("person");person.setId(personObject.getInt("id"));person.setName(personObject.getString("name"));person.setAddress(personObject.getString("address"));} catch (Exception e) {// TODO: handle exception}return person;}public static List<Person> getPersons(String key, String jsonString) {List<Person> list = new ArrayList<Person>();        //{"persons":[{"address":"guangxi","id":1001,"name":"jack"},{"address":"guangdong","id":1002,"name":"rose"}]}try {            JSONObject jsonObject = new JSONObject(jsonString);            JSONArray jsonArray = jsonObject.getJSONArray(key);            for (int i = 0; i < jsonArray.length(); i++) {                JSONObject jsonObject2 = jsonArray.getJSONObject(i);                Person person = new Person();                person.setId(jsonObject2.getInt("id"));                person.setName(jsonObject2.getString("name"));                person.setAddress(jsonObject2.getString("address"));                list.add(person);            }        } catch (Exception e) {            // TODO: handle exception        }        return list;}public static List<String> getList(String key, String jsonString) {List<String> list = new ArrayList<String>();try {JSONObject jsonObject = new JSONObject(jsonString);JSONArray jsonArray = jsonObject.getJSONArray(key);for (int i = 0; i < jsonArray.length(); i++) {String msg = jsonArray.getString(i);list.add(msg);}} catch (Exception e) {// TODO: handle exception}return list;}public static List<Map<String, Object>> listKeyMaps(String key,String jsonString) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();try {JSONObject jsonObject = new JSONObject(jsonString);JSONArray jsonArray = jsonObject.getJSONArray(key);for (int i = 0; i < jsonArray.length(); i++) {JSONObject jsonObject2 = jsonArray.getJSONObject(i);Map<String, Object> map = new HashMap<String, Object>();Iterator<String> iterator = jsonObject2.keys();while (iterator.hasNext()) {String json_key = iterator.next();Object json_value = jsonObject2.get(json_key);if (json_value == null) {json_value = "";}map.put(json_key, json_value);}list.add(map);}} catch (Exception e) {// TODO: handle exception}return list;}}

7.列印出解析後的資料

String path = "http://192.168.191.1:8080/jsonProject/servlet/JsonAction?action_flag=person";String jsonString = HttpUtils.getJsonContent(path);Person person = JsonTools.getPerson("person", jsonString);Log.i(TAG, person.toString());


Android 解析json資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.