AndroidでJSONを解析する2つの方法

5178 ワード

Androidプラットフォームでは、JSONを解析するには、一般的に2つの方法があります.
  • android内蔵org.jsonパッケージ
  • googleのオープンソースgsonライブラリ
    json解析はまず解析対象がJSOnObjectかJSOnArrayかを明確にする必要がある

  • JSONオブジェクトとJSON配列を解析するには、次の2つの技術を使用します.
    使用org.jsonパッケージのクラス
    JSONObject
    解析対象文字列:{"name":"king","age":"20","sex":"male"}
    //     
    Person person = new Person();
    //    json  
    JSONObject obj = new JSONObject(json);
    //         
    person.name = obj.getString("name");
    person.age = obj.getString("age");
    person.sex = obj.getString("sex");

    JSONArray
    解析対象文字列:[{"name":"king 1","age":"21","sex":"male"},{"name":"king 2","age":"22","sex":"male"},{"name":"king 3","age":"23","sex":"female"}]
    //     
    JSONArray array = new JSONArray(json);
    ArrayList<Person> list = new ArrayList<Person>();
    //     
    for (int i = 0; i < array.length(); i++) {
        Person person = new Person();
        JSONObject item = array.getJSONObject(i);
        person.name = item.getString("name");
        person.age = item.getString("age");
        person.sex = item.getString("sex");
        list.add(bean);
    }
    

    Googleオープンソースを使用したjavaライブラリ:gson
    JSONObject
  • gsonのjarパッケージを工事中
  • に導入
  • 解析対象のフィールドを含むオブジェクトを作成し、getメソッドとsetメソッド、
  • を提供します.
    public class Person {
        private String name;
        private String age;
        private String sex;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
    }
  • Gson解析
  • を用いる
    Gson gson = new Gson();
    Person person = gson.fromJson(json, Person.class);
    person.name = person.getName();
    person.age = person.getAge();
    person.sex = person.getSex();

    JSONArray
    Gson gson = new Gson();
    Type type = new TypeToken<ArrayList<Person>>() {}.getType(); 
    List<Person> personArray = gson.fromJson(json, type);
    List<Person> persons = new ArrayList<Person>();
    for(Person person:personArray){
        persons.add(person);
    }