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"}
JSONArray
解析対象文字列:[{"name":"king 1","age":"21","sex":"male"},{"name":"king 2","age":"22","sex":"male"},{"name":"king 3","age":"23","sex":"female"}]
Googleオープンソースを使用したjavaライブラリ:gson
JSONObject gsonのjarパッケージを工事中 に導入解析対象のフィールドを含むオブジェクトを作成し、getメソッドとsetメソッド、 を提供します. Gson解析 を用いる
JSONArray
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
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 = 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);
}