JSON的三種解析方式

來源:互聯網
上載者:User

標籤:流量   abi   add   on()   cep   理解   ref   alibaba   array   

http://www.cnblogs.com/zhujiabin/p/5498272.html

一、什麼是JSON?

JSON是一種取代XML的資料結構,和xml相比,它更小巧但描述能力卻不差,由於它的小巧所以網路傳輸資料將減少更多流量從而加快速度。

JSON就是一串字串 只不過元素會使用特定的符號標註。

{} 雙括弧表示對象

[] 中括弧表示數組

"" 雙引號內是屬性或值

: 冒號表示後者是前者的值(這個值可以是字串、數字、也可以是另一個數組或對象)

所以 {"name": "Michael"} 可以理解為是一個包含name為Michael的對象

而[{"name": "Michael"},{"name": "Jerry"}]就表示包含兩個對象的數組

當然了,你也可以使用{"name":["Michael","Jerry"]}來簡化上面一部,這是一個擁有一個name數組的對象

二、JSON解析之傳統的JSON解析1、產生json字串
public static String createJsonString(String key, Object value) {        JSONObject jsonObject = new JSONObject();        jsonObject.put(key, value);        return jsonObject.toString();}
2、解析JSON字串

分為以下三種情況,一個JavaBean,一個List數組,一個嵌套Map的List數組:

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;/** * 完成對json資料的解析 *  */public class JsonTools {    public static Person getPerson(String key, String jsonString) {        Person person = new Person();        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 getPersons(String key, String jsonString) {        List list = new ArrayList();        try {            JSONObject jsonObject = new JSONObject(jsonString);            // 返回json的數組            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 getList(String key, String jsonString) {        List list = new ArrayList();        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> listKeyMaps(String key,            String jsonString) {        List> list = new ArrayList>();        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 map = new HashMap();                Iterator 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;    }}
三、JSON解析之GSON1、產生JSON字串
import com.google.gson.Gson;public class JsonUtils {    public static String createJsonObject(Object obj) {        Gson gson = new Gson();        String str = gson.toJson(obj);        return str;    }}二、解析JSONimport java.util.ArrayList;import java.util.List;import java.util.Map;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;;public class GsonTools {    public GsonTools() {        // TODO Auto-generated constructor stub    }    /**     * @param      * @param jsonString     * @param cls     * @return     */    public static  T getPerson(String jsonString, Class cls) {        T t = null;        try {            Gson gson = new Gson();            t = gson.fromJson(jsonString, cls);        } catch (Exception e) {            // TODO: handle exception        }        return t;    }    /**     * 使用Gson進行解析 List     *      * @param      * @param jsonString     * @param cls     * @return     */    public static  List getPersons(String jsonString, Class cls) {        List list = new ArrayList();        try {            Gson gson = new Gson();            list = gson.fromJson(jsonString, new TypeToken>() {            }.getType());        } catch (Exception e) {        }        return list;    }    /**     * @param jsonString     * @return     */    public static List getList(String jsonString) {        List list = new ArrayList();        try {            Gson gson = new Gson();            list = gson.fromJson(jsonString, new TypeToken>() {            }.getType());        } catch (Exception e) {            // TODO: handle exception        }        return list;    }    public static List> listKeyMaps(String jsonString) {        List> list = new ArrayList>();        try {            Gson gson = new Gson();            list = gson.fromJson(jsonString,                    new TypeToken>>() {                    }.getType());        } catch (Exception e) {            // TODO: handle exception        }        return list;    }}
三、JSON解析之FastJSON
import java.util.ArrayList;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.TypeReference;public class JsonTool {    public static  T getPerson(String jsonstring, Class cls) {        T t = null;        try {            t = JSON.parseObject(jsonstring, cls);        } catch (Exception e) {            // TODO: handle exception        }        return t;    }    public static  List getPersonList(String jsonstring, Class cls) {        List list = new ArrayList();        try {            list = JSON.parseArray(jsonstring, cls);        } catch (Exception e) {            // TODO: handle exception        }        return list;    }    public static  List> getPersonListMap1(            String jsonstring) {        List> list = new ArrayList>();        try {            list = JSON.parseObject(jsonstring,                    new TypeReference>>() {                    }.getType());        } catch (Exception e) {            // TODO: handle exception        }        return list;    }}
總結:

JSON對於行動裝置來說,尤其對於網路環境較差和流量限制的情況下,相對於XML格式的資料轉送會更節省流量,傳輸效率更高。在這三種解析方式中FastJson是效率最高的,推薦使用。

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.