Android 애플릿 - JSON의 3가지 해석 방법

1. JSON이란?
JSON은 XML을 대체하는 데이터 구조로 xml에 비해 작지만 묘사 능력이 떨어지지 않는다. 작기 때문에 네트워크 전송 데이터는 더 많은 데이터를 줄이고 속도를 높일 것이다.
JSON은 문자열로 요소에 특정 기호 마크업을 사용합니다.
{} 괄호는 객체를 나타냅니다.
[] 중괄호는 배열을 나타냅니다.
'' 큰따옴표 안은 속성 또는 값입니다.
: 사칭은 후자가 전자의 값임을 나타낸다. (이 값은 문자열, 숫자, 또는 다른 수조 또는 대상일 수도 있다)
따라서 {"name": "Michael"}은name이 Michael인 객체로 이해할 수 있습니다.
[{"name": "Michael"}, {"name": "Jerry"}]는 두 객체가 포함된 배열을 나타냅니다.
물론, 당신은 {"name": ["Michael", "Jerry"]}를 사용하여 위쪽을 간소화할 수 있습니다. 이것은name 그룹을 가진 대상입니다.
2. JSON 해석의 전통적인 JSON 해석
1. JSON 문자열 생성
publicstatic String createJsonString(String key, Object value) {
        JSONObject jsonObject = newJSONObject();
        jsonObject.put(key, value);
        returnjsonObject.toString();
    }

2. JSON 문자열 해석
JavaBean, List 배열, 중첩 Map의 List 배열 등 세 가지 시나리오로 나눌 수 있습니다.
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Map;
 
importorg.json.JSONArray;
importorg.json.JSONObject;
 
importcom.android.myjson.domain.Person;
 
/**
 *    json     
 *
 */
publicclass JsonTools {
 
 
    publicstatic Person getPerson(String key, String jsonString) {
        Person person = newPerson();
        try{
            JSONObject jsonObject = newJSONObject(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
        }
        returnperson;
    }
 
    publicstatic List<person> getPersons(String key, String jsonString) {
        List<person> list = newArrayList<person>();
        try{
            JSONObject jsonObject = newJSONObject(jsonString);
            //   json   
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            for(inti = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                Person person = newPerson();
                person.setId(jsonObject2.getInt("id"));
                person.setName(jsonObject2.getString("name"));
                person.setAddress(jsonObject2.getString("address"));
                list.add(person);
            }
        }catch(Exception e) {
            // TODO: handle exception
        }
        returnlist;
    }
 
    publicstatic List<string> getList(String key, String jsonString) {
        List<string> list = newArrayList<string>();
        try{
            JSONObject jsonObject = newJSONObject(jsonString);
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            for(inti = 0; i < jsonArray.length(); i++) {
                String msg = jsonArray.getString(i);
                list.add(msg);
            }
        }catch(Exception e) {
            // TODO: handle exception
        }
        returnlist;
    }
 
    publicstatic List<map<string, object="">> listKeyMaps(String key,
            String jsonString) {
        List<map<string, object="">> list = newArrayList<map<string, object="">>();
        try{
            JSONObject jsonObject = newJSONObject(jsonString);
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            for(inti = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                Map<string, object=""> map = newHashMap<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
        }
        returnlist;
    }
}

3. JSON 해석의 GSON
1. JSON 문자열 생성
importcom.google.gson.Gson;
 
publicclass JsonUtils {
 
    publicstatic String createJsonObject(Object obj) {
        Gson gson = newGson();
        String str = gson.toJson(obj);
        returnstr;
 
    }
}

2, 해석 JSON
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Map;
 
importcom.google.gson.Gson;
importcom.google.gson.reflect.TypeToken;
 
;
publicclass GsonTools {
 
    publicGsonTools() {
        // TODO Auto-generated constructor stub
    }
 
    /**
     * @param <t>
     * @param jsonString
     * @param cls
     * @return
     */
    publicstatic <t> T getPerson(String jsonString, Class<t> cls) {
        T t = null;
        try{
            Gson gson = newGson();
            t = gson.fromJson(jsonString, cls);
        }catch(Exception e) {
            // TODO: handle exception
        }
        returnt;
    }
 
    /**
     *   Gson     List<person>
     *
     * @param <t>
     * @param jsonString
     * @param cls
     * @return
     */
    publicstatic <t> List<t> getPersons(String jsonString, Class<t> cls) {
        List<t> list = newArrayList<t>();
        try{
            Gson gson = newGson();
            list = gson.fromJson(jsonString, newTypeToken<list<t>>() {
            }.getType());
        }catch(Exception e) {
        }
        returnlist;
    }
 
    /**
     * @param jsonString
     * @return
     */
    publicstatic List<string> getList(String jsonString) {
        List<string> list = newArrayList<string>();
        try{
            Gson gson = newGson();
            list = gson.fromJson(jsonString, newTypeToken<list<string>>() {
            }.getType());
        }catch(Exception e) {
            // TODO: handle exception
        }
        returnlist;
    }
 
    publicstatic List<map<string, object="">> listKeyMaps(String jsonString) {
        List<map<string, object="">> list = newArrayList<map<string, object="">>();
        try{
            Gson gson = newGson();
            list = gson.fromJson(jsonString,
                    newTypeToken<list<map<string, object="">>>() {
                    }.getType());
        }catch(Exception e) {
            // TODO: handle exception
        }
        returnlist;
    }
}


3. JSON 해석의FastJSON
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Map;
 
importcom.alibaba.fastjson.JSON;
importcom.alibaba.fastjson.TypeReference;
 
publicclass JsonTool {
 
    publicstatic <t> T getPerson(String jsonstring, Class<t> cls) {
        T t = null;
        try{
            t = JSON.parseObject(jsonstring, cls);
        }catch(Exception e) {
            // TODO: handle exception
        }
        returnt;
    }
 
    publicstatic <t> List<t> getPersonList(String jsonstring, Class<t> cls) {
        List<t> list = newArrayList<t>();
        try{
            list = JSON.parseArray(jsonstring, cls);
        }catch(Exception e) {
            // TODO: handle exception
        }
        returnlist;
    }
 
    publicstatic <t> List<map<string, object="">> getPersonListMap1(
            String jsonstring) {
        List<map<string, object="">> list = newArrayList<map<string, object="">>();
        try{
            list = JSON.parseObject(jsonstring,
                    newTypeReference<list<map<string, object="">>>() {
                    }.getType());
 
        }catch(Exception e) {
            // TODO: handle exception
        }
 
        returnlist;
    }
}
요약:
JSON은 모바일 기기에 있어 특히 네트워크 환경이 나쁘고 데이터 제한이 있는 상황에서 XML 형식의 데이터 전송보다 데이터를 절약하고 전송 효율이 높다.이 세 가지 해석 방식 중 FastJson이 가장 효율적이어서 추천합니다.

좋은 웹페이지 즐겨찾기