这篇文章主要介绍了 Android 解析 JSON 数据的方法, 结合实例形式演示了 Android 解析 json 格式数据的原理与相关技巧, 具有一定参考借鉴价值, 需要的朋友可以参考下
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
本文实例讲述了 Android 解析 JSON 数据的方法。分享给大家供大家参考,具体如下:
JSON 作为一种 "轻量" 的数据结构传递数据,在 JS 中有广泛的应用
Google 公司对 JSON 的解析提供了 gson.jar 这个包,它不依赖于其他任何 JAR 包;自从 Android3.0 中已经合入了该解析器的功能,但之前的版本是没有的。
- findViewById(R.id.parseBtn).setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
- MainActivity.parseJson(jsonData);
- }
- });
- public static void parseJson(String jsonStr){
- //如果要解析JSON数据,首先要有一个JsonReader对象
- JsonReader jsonReader = new JsonReader(new StringReader(jsonStr));
- try {
- //开始遍历数组(多个JSON对象)
- jsonReader.beginArray();
- while(jsonReader.hasNext()){
- //开始遍历JSON对象(含有多个属性)
- jsonReader.beginObject();
- while(jsonReader.hasNext()){
- String tagName = jsonReader.nextName();
- if(tagName.equals("name")){
- System.out.println("name --> " + jsonReader.nextString());
- }else if(tagName.equals("age")){
- System.out.println("age --> " + jsonReader.nextString());
- }
- }
- //遍历JSON对象结束
- jsonReader.endObject();
- }
- //遍历数组结束
- jsonReader.endArray();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
将 JSON 格式转换为类的步骤如下:
- //先定义一个类
- public class User {
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
- //只将一组数据转换的方法
- findViewById(R.id.parseObj).setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- String jsonData = "{\"name\":\"Michael\",\"age\":20}";
- Gson gson = new Gson();
- User user = gson.fromJson(jsonData, User.class);
- System.out.println("name--->" + user.getName());
- System.out.println("age---->" + user.getAge());
- }
- });
- //将多组数据转换的方法
- findViewById(R.id.parseObjs).setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
- Type listType = new TypeToken<LinkedList<User>>(){}.getType();
- Gson gson = new Gson();
- LinkedList<User> users = gson.fromJson(jsonData, listType);
- for (Iterator iterator = users.iterator(); iterator.hasNext();) {
- User user = (User) iterator.next();
- System.out.println("name--->" + user.getName());
- System.out.println("age---->" + user.getAge());
- }
- }
- });
希望本文所述对大家 Android 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0323/231909.html