在android平台上,解析JSON一般有两种方式可供选择:

  1. android内置的org.json包

  2. google的开源gson库

    json解析首先需要明确待解析的是JSONObject 还是 JSONArray

以下将分别采用这两种技术解析JSON对象和JSON数组:

使用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”:”king1”,
“age”:”21”,
“sex”:”male”
},
{
“name”:”king2”,
“age”:”22”,
“sex”:”male”
},
{
“name”:”king3”,
“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

  1. 把gson的jar包导入工程中
  2. 创建一个对象,包含待解析的字段,提供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;    }}
  1. 使用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);}

更多相关文章

  1. 字符串资源多国语言版本的出错问题
  2. Intent传递对象的两种方法(Serializable,Parcelable)
  3. Android系列之Intent传递对象的两种方法
  4. Android studio插件GsonFormat,返回json快速创建实体对象
  5. android字符串工具类
  6. android将对象写入文件和从文件中读取对象数据
  7. [Android]TextUtils.ellipsize()截取指定长度字符串(附图文混排)
  8. android把字符串内容保存到指定路径
  9. android EditText插入字符串到光标所在位置

随机推荐

  1. bootstrap常用组件样式使用之,导航,列表,按
  2. 常用字符串数组方法
  3. 缅甸将赌场合法化,成为全东南亚赌场最多的
  4. 访问器属性、闭包概念以及常用的DOM选择
  5. 变量、常量、数据类型
  6. bootstrap的入门学习
  7. 浅析 MVC
  8. 事件注册与事件代理
  9. 修改省、删除省
  10. 有关H5中背景音乐的自动播放功能