Android中解析JSON的两种方式
16lz
2021-01-23
在android平台上,解析JSON一般有两种方式可供选择:
android内置的org.json包
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
- 把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);}
更多相关文章
- 字符串资源多国语言版本的出错问题
- Intent传递对象的两种方法(Serializable,Parcelable)
- Android系列之Intent传递对象的两种方法
- Android studio插件GsonFormat,返回json快速创建实体对象
- android字符串工具类
- android将对象写入文件和从文件中读取对象数据
- [Android]TextUtils.ellipsize()截取指定长度字符串(附图文混排)
- android把字符串内容保存到指定路径
- android EditText插入字符串到光标所在位置