目录
一、Gson介绍
二、使用方法
完整代码:
MainActivity:
布局:
运行结果:
一、Gson介绍
Gson是Google提供的一个Java库,用于将Java对象转换为JSON格式数据或将JSON格式数据转换为Java对象。
常用方法:
方法名 | 功能 |
toJson(Object src) | 将对象转换成相应的JSON数据 |
fromJson(String json,Class<T> classOT) | 将JSON数据转换成对象 |
二、使用方法
Gson是Google提供的一个用于将Java对象与JSON数据进行互相转换的开源库。下面是使用Gson的详细方法:
1. 添加依赖
在你的Android项目中,需要在build.gradle文件中添加以下依赖:
dependencies {
implementation 'com.google.code.gson:gson:2.8.7'
}
2. 创建Java类
首先需要创建一个Java类,这个Java类将与JSON对象进行互相转换。以下示例代码展示了一个Java类的基本结构:
package com.example.gsondemo;public class Student {private String id;private String name;private int age;private String sex;public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getId() {return id;}public void setId(String id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
3. 将Java对象转换为JSON字符串
使用Gson可以将Java对象序列化为JSON字符串。以下示例代码展示了如何使用Gson将User对象转换为JSON字符串:
Student student = new Student(); student.setId("001"); student.setName("xiaoming"); student.setAge(18); student.setSex("男"); // 将对象转成json数据 String jsonStr = gson.toJson(student);
4. 将JSON字符串转换为Java对象
使用Gson可以将JSON字符串反序列化为Java对象。以下示例代码展示了如何使用Gson将JSON字符串转换为User对象:
// 将对象转成json数据 String jsonStr = gson.toJson(student); // 将json解析成对象数据 Student s = gson.fromJson(jsonStr,Student.class); et5.setText(s.getId()+" "+s.getName()+" "+s.getAge()+" "+s.getSex());
通过以上几步,您就可以使用Gson轻松地将Java对象与JSON数据进行互相转换。
完整代码:
MainActivity:
package com.example.gsondemo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MainActivity extends AppCompatActivity {
Button btn;
EditText et1,et2,et3,et4,et5;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Gson gson= new Gson();Student student = new Student();student.setId("001");student.setName("xiaoming");student.setAge(18);student.setSex("男");// 将对象转成json数据String jsonStr = gson.toJson(student);et1.setText(jsonStr);// 第二种列表数据List<String> list = Arrays.asList("1","ad","12","134");et2.setText(gson.toJson(list));// 第三种映射对象Map<String,Object> content = new HashMap<>();content.put("id","002");content.put("name","xiaohua");content.put("sex","女");content.put("age",18);et3.setText(gson.toJson(content));// 使用GSON的fromJson方法// 解析复杂数据需要Type来解析或生成JSON数据。Type type = new TypeToken<ArrayList<String>>(){}.getType();ArrayList<String> sList = gson.fromJson(list.toString(),type);et4.setText(sList.toString());// 将json解析成对象数据Student s = gson.fromJson(jsonStr,Student.class);et5.setText(s.getId()+" "+s.getName()+" "+s.getAge()+" "+s.getSex());}});}private void initView() {btn = findViewById(R.id.btn);et1 = findViewById(R.id.et1);et2 = findViewById(R.id.et2);et3 = findViewById(R.id.et3);et4 = findViewById(R.id.et4);et5 = findViewById(R.id.et5);}
}
布局:
<?xml version="1.0" encoding="UTF-8"?><LinearLayoutandroid:paddingTop="16dp"android:paddingRight="16dp"android:paddingLeft="16dp"android:paddingBottom="16dp"android:layout_height="match_parent"android:layout_width="match_parent"android:orientation="vertical"xmlns:android="http://schemas.android.com/apk/res/android"><Buttonandroid:layout_height="wrap_content"android:layout_width="match_parent"android:id="@+id/btn"android:layout_alignParentTop="true"android:text="GSON TEST"/><EditTextandroid:layout_height="wrap_content"android:layout_width="match_parent"android:id="@+id/et1"android:text="FromObjectToJsonData"android:layout_below="@+id/textView1"android:layout_marginTop="11dp"android:inputType="textPersonName"/><EditTextandroid:layout_height="wrap_content"android:layout_width="match_parent"android:id="@+id/et2"android:text="FromListDataToJsonData"android:layout_below="@+id/et1"android:inputType="textPersonName"android:ems="10"/><EditTextandroid:layout_height="wrap_content"android:layout_width="match_parent"android:id="@+id/et3"android:text="FromMapDataToJsonData"android:layout_below="@+id/et2"android:layout_marginTop="11dp"android:inputType="textPersonName"/><EditTextandroid:layout_height="wrap_content"android:layout_width="match_parent"android:id="@+id/et4"android:layout_alignParentStart="true"android:layout_alignParentLeft="true"android:text="FromJsonToComplexData"android:layout_below="@+id/textView2"android:inputType="textPersonName"android:ems="10"/><EditTextandroid:layout_height="wrap_content"android:layout_width="match_parent"android:id="@+id/et5"android:layout_alignParentStart="true"android:layout_alignParentLeft="true"android:text="FromJsonToObjectData"android:layout_below="@+id/textView2"android:ems="10"/></LinearLayout>
Student在上面。