Android JSON数据解析

一、什么是JSON

1.JSON:JavaScript Object Notation;

2.JSON数据时一系列键值对的集合;

3.JSON已经被大多数开发人员接受,在网络数据的传输当中应用非常广泛;

4.JSON相对于XML来讲解析稍微方便一些;

二、JSON vs XML

1. JSON和XML的数据可读性基本相同;

2.JSON和XML同样拥有丰富的解析手段;

3.JSON相对于XML来讲,数据体积小;

4.JSON与JavaScript的交互更加方便;

5.JSON对数据的描述性相对较差;

三、一个JSON的例子

image

 

四、使用JsonReader解析JSON

private String jsonData = “[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]“;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package lpq.json;

import java.io.StringReader;

import com.google.gson.stream.JsonReader;

public class JsonUtils {
    public void parseJson(String jsonData){
        try{
            //如果需要解析JSON数据,首要要生成一个JsonReader对象
            JsonReader reader = new JsonReader(new StringReader(jsonData));
            reader.beginArray();
            while(reader.hasNext()){
                reader.beginObject();
                while(reader.hasNext()){
                    String tagName = reader.nextName();
                    if(tagName.equals("name")){
                        System.out.println("name--->" + reader.nextString());
                    }
                    else if(tagName.equals("age")){
                        System.out.println("age--->" + reader.nextInt());
                    }
                }
                reader.endObject();
            }
            reader.endArray();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

image

五、使用Gson解析JSON

private String jsonData = “{\”name\”:\”Michael\”,\”age\”:20}”;

User.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package lpq.json;

public class User {
    private String name ;
    private int age ;
    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;
    }
}

JsonUtils.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package lpq.json;

import com.google.gson.Gson;


public class JsonUtils {
   
    public void parseUserFromJson(String jsonData){
        Gson gson = new Gson();
        User user = gson.fromJson(jsonData, User.class);
        System.out.println("name--->" + user.getName());
        System.out.println("age---->" + user.getAge());
       
    }
}

 

或者:

private String jsonData = “[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]“;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package lpq.json;

import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;


public class JsonUtils {
   
    public void parseUserFromJson(String jsonData){
        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());
        }
       
    }
}

 

除非注明,饮水思源博客文章均为原创,转载请以链接形式标明本文地址

本文地址:http://www.blogfshare.com/android-json.html

本文链接:http://www.blogfshare.com/android-json.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>