使用google gson包进行Json转换小记

推荐Mars老师的安卓课程,很适合入门学习

JSON: JavaScript Object Notation(JavaScript 对象表示法)

JSON 是存储和交换文本信息的语法。类似 XML。

但是传输数据的时候Json的体积更小。但是Json的可读性相比于xml来说,Json的可读性较差。

json官方网站(www.json.org),但是没有必要把整个网站看一遍,知道这个网站,需要的话可以上去看下,

使用json的时候我们可以使用google的gson,并且这个类库是自依赖的,不依赖其他的类库,安装这一个包就可以使用,可以自行搜索安装

在使用Json的时候,key值必须为String类型,具体为什么只能使用String类型这个大家可以自己百度下,value 的值可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

  • 方法一:使用gson进行数据解析代码实战:
    下面的代码是手动解析json数组,一般情况下我们不使用这种方法解析数据,可以直接使用方法二
    下面的Jsonutil中的解析步骤可以分为
    解析数组,解析对象,然后取键值对这三步
public class JSONMain {
    
    
    public static void main(String[] args) {
    
    
        String jsonArray =
                "[{\"name\":\"lll\",\"age\":24}," +
                        "{\"name\":\"hello\",\"age\":20}]";
        JsonUtil jsonUtil=new JsonUtil();
        jsonUtil.parseJsonArray(jsonArray);
        /*
        输出结果:
        name->lll
        age->24
        name->hello
        age->20
		*/
    }
}

public class JsonUtil {
    
    
    private static final String TAG = "JsonUtil";
    
    // 下面的步骤可以理解为解析数组,解析对象,然后取键值对这三步
    public void parseJsonArray(String jsonData) {
    
    
        try {
    
    
            // 首先要生成一个JsonReader对象
            JsonReader jsonReader = new JsonReader(new StringReader(jsonData));

            // 开始解析数组
            jsonReader.beginArray();
            while (jsonReader.hasNext()) {
    
    
                // 开始解析对象
                jsonReader.beginObject();
                while (jsonReader.hasNext()) {
    
    
                    // 获取标签名称
                    String tagName = jsonReader.nextName();
                    if (tagName.equals("name")) {
    
    
                    // 获取value
                        System.out.println("name->" + jsonReader.nextString());
                    } else if (tagName.equals("age")) {
    
    
                        // 获取value值
                        System.out.println("age->" + jsonReader.nextInt());
                    }
                }
                // Json对象解析完成
                jsonReader.endObject();
            }
            // Json数组解析完成
            jsonReader.endArray();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
}


  • 方法二: 将jsonArray中的每一个数据对象转换成为java对象
    这个转换过程可以分为两步
    第一步:根据数据对象的键值创建我们需要的java类
    第二部:将jsonArray中的数据转换到java对象中

public class JSONMain {
    
    
    public static void main(String[] args) {
    
    
        String jsonArray =
                "[{\"name\":\"lll\",\"age\":24}," +
                        "{\"name\":\"hello\",\"age\":20}]";
        Gson gson = new Gson();

        Type listType = new TypeToken<LinkedList<User>>() {
    
    }.getType();
        LinkedList<User> users = gson.fromJson(jsonArray, listType);
        for (User user : users) {
    
    
            System.out.println(user.getName());
            System.out.println(user.getAge());
        }
        /*
        lll
		24
		hello
		20
		*/
    }
}

// 根据数据类创建java类

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;
    }
}

当我们只解析单个数据对象的时候我们可以使用下面的方法:

    public static void main(String[] args) {
    
    
        String jsonData =
                "{\"name\":\"lll\",\"age\":24}";
        Gson gson = new Gson();
        User user=gson.fromJson(jsonData,User.class);
        System.out.println(user.getName()+" "+user.getAge());
    }
    /*
	输出
	lll 24
	*/

猜你喜欢

转载自blog.csdn.net/liu_12345_liu/article/details/102991316